var t = require("../@babel/runtime/helpers/typeof");

!function(e, n) {
    "object" == ("undefined" == typeof exports ? "undefined" : t(exports)) && "undefined" != typeof module ? n(exports) : "function" == typeof define && define.amd ? define([ "exports" ], n) : n((void 0).echarts = {});
}(0, function(e) {
    function n(t, e) {
        "createCanvas" === t && (qu = null), Uu[t] = e;
    }
    function i(e) {
        if (null == e || "object" != t(e)) return e;
        var n = e, r = Ru.call(e);
        if ("[object Array]" === r) {
            if (!B(e)) {
                n = [];
                for (var o = 0, a = e.length; a > o; o++) n[o] = i(e[o]);
            }
        } else if (zu[r]) {
            if (!B(e)) {
                var s = e.constructor;
                if (e.constructor.from) n = s.from(e); else {
                    n = new s(e.length);
                    for (o = 0, a = e.length; a > o; o++) n[o] = i(e[o]);
                }
            }
        } else if (!Nu[r] && !B(e) && !I(e)) for (var l in n = {}, e) e.hasOwnProperty(l) && (n[l] = i(e[l]));
        return n;
    }
    function r(t, e, n) {
        if (!b(e) || !b(t)) return n ? i(e) : t;
        for (var o in e) if (e.hasOwnProperty(o)) {
            var a = t[o], s = e[o];
            !b(s) || !b(a) || x(s) || x(a) || I(s) || I(a) || S(s) || S(a) || B(s) || B(a) ? !n && o in t || (t[o] = i(e[o])) : r(a, s, n);
        }
        return t;
    }
    function o(t, e) {
        for (var n = t[0], i = 1, o = t.length; o > i; i++) n = r(n, t[i], e);
        return n;
    }
    function a(t, e) {
        for (var n in e) e.hasOwnProperty(n) && (t[n] = e[n]);
        return t;
    }
    function s(t, e, n) {
        for (var i in e) e.hasOwnProperty(i) && (n ? null != e[i] : null == t[i]) && (t[i] = e[i]);
        return t;
    }
    function l() {
        return qu || (qu = Yu().getContext("2d")), qu;
    }
    function u(t, e) {
        if (t) {
            if (t.indexOf) return t.indexOf(e);
            for (var n = 0, i = t.length; i > n; n++) if (t[n] === e) return n;
        }
        return -1;
    }
    function h(t, e) {
        function n() {}
        var i = t.prototype;
        for (var r in n.prototype = e.prototype, t.prototype = new n(), i) i.hasOwnProperty(r) && (t.prototype[r] = i[r]);
        t.prototype.constructor = t, t.superClass = e;
    }
    function c(t, e, n) {
        s(t = "prototype" in t ? t.prototype : t, e = "prototype" in e ? e.prototype : e, n);
    }
    function d(t) {
        return t ? "string" != typeof t && "number" == typeof t.length : void 0;
    }
    function f(t, e, n) {
        if (t && e) if (t.forEach && t.forEach === Vu) t.forEach(e, n); else if (t.length === +t.length) for (var i = 0, r = t.length; r > i; i++) e.call(n, t[i], i, t); else for (var o in t) t.hasOwnProperty(o) && e.call(n, t[o], o, t);
    }
    function p(t, e, n) {
        if (t && e) {
            if (t.map && t.map === Wu) return t.map(e, n);
            for (var i = [], r = 0, o = t.length; o > r; r++) i.push(e.call(n, t[r], r, t));
            return i;
        }
    }
    function g(t, e, n, i) {
        if (t && e) {
            if (t.reduce && t.reduce === Xu) return t.reduce(e, n, i);
            for (var r = 0, o = t.length; o > r; r++) n = e.call(i, n, t[r], r, t);
            return n;
        }
    }
    function m(t, e, n) {
        if (t && e) {
            if (t.filter && t.filter === Hu) return t.filter(e, n);
            for (var i = [], r = 0, o = t.length; o > r; r++) e.call(n, t[r], r, t) && i.push(t[r]);
            return i;
        }
    }
    function v(t, e) {
        var n = Gu.call(arguments, 2);
        return function() {
            return t.apply(e, n.concat(Gu.call(arguments)));
        };
    }
    function y(t) {
        var e = Gu.call(arguments, 1);
        return function() {
            return t.apply(this, e.concat(Gu.call(arguments)));
        };
    }
    function x(t) {
        return "[object Array]" === Ru.call(t);
    }
    function _(t) {
        return "function" == typeof t;
    }
    function w(t) {
        return "[object String]" === Ru.call(t);
    }
    function b(e) {
        var n = t(e);
        return "function" === n || !!e && "object" === n;
    }
    function S(t) {
        return !!Nu[Ru.call(t)];
    }
    function M(t) {
        return !!zu[Ru.call(t)];
    }
    function I(e) {
        return "object" == t(e) && "number" == typeof e.nodeType && "object" == t(e.ownerDocument);
    }
    function T(t) {
        return t != t;
    }
    function C() {
        for (var t = 0, e = arguments.length; e > t; t++) if (null != arguments[t]) return arguments[t];
    }
    function D(t, e) {
        return null != t ? t : e;
    }
    function A(t, e, n) {
        return null != t ? t : null != e ? e : n;
    }
    function k() {
        return Function.call.apply(Gu, arguments);
    }
    function P(t) {
        if ("number" == typeof t) return [ t, t, t, t ];
        var e = t.length;
        return 2 === e ? [ t[0], t[1], t[0], t[1] ] : 3 === e ? [ t[0], t[1], t[2], t[1] ] : t;
    }
    function L(t, e) {
        if (!t) throw new Error(e);
    }
    function O(t) {
        return null == t ? null : "function" == typeof t.trim ? t.trim() : t.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, "");
    }
    function E(t) {
        t[ju] = !0;
    }
    function B(t) {
        return t[ju];
    }
    function N(t) {
        function e(t, e) {
            n ? i.set(t, e) : i.set(e, t);
        }
        var n = x(t);
        this.data = {};
        var i = this;
        t instanceof N ? t.each(e) : t && f(t, e);
    }
    function z(t) {
        return new N(t);
    }
    function R() {}
    function F(t, e) {
        var n = new Ku(2);
        return null == t && (t = 0), null == e && (e = 0), n[0] = t, n[1] = e, n;
    }
    function V(t, e) {
        return t[0] = e[0], t[1] = e[1], t;
    }
    function H(t) {
        var e = new Ku(2);
        return e[0] = t[0], e[1] = t[1], e;
    }
    function G(t, e, n) {
        return t[0] = e[0] + n[0], t[1] = e[1] + n[1], t;
    }
    function W(t, e, n, i) {
        return t[0] = e[0] + n[0] * i, t[1] = e[1] + n[1] * i, t;
    }
    function X(t, e, n) {
        return t[0] = e[0] - n[0], t[1] = e[1] - n[1], t;
    }
    function U(t) {
        return Math.sqrt(Y(t));
    }
    function Y(t) {
        return t[0] * t[0] + t[1] * t[1];
    }
    function q(t, e, n) {
        return t[0] = e[0] * n, t[1] = e[1] * n, t;
    }
    function j(t, e) {
        var n = U(e);
        return 0 === n ? (t[0] = 0, t[1] = 0) : (t[0] = e[0] / n, t[1] = e[1] / n), t;
    }
    function Z(t, e) {
        return Math.sqrt((t[0] - e[0]) * (t[0] - e[0]) + (t[1] - e[1]) * (t[1] - e[1]));
    }
    function K(t, e) {
        return (t[0] - e[0]) * (t[0] - e[0]) + (t[1] - e[1]) * (t[1] - e[1]);
    }
    function $(t, e, n) {
        var i = e[0], r = e[1];
        return t[0] = n[0] * i + n[2] * r + n[4], t[1] = n[1] * i + n[3] * r + n[5], t;
    }
    function Q(t, e, n) {
        return t[0] = Math.min(e[0], n[0]), t[1] = Math.min(e[1], n[1]), t;
    }
    function J(t, e, n) {
        return t[0] = Math.max(e[0], n[0]), t[1] = Math.max(e[1], n[1]), t;
    }
    function tt() {
        this.on("mousedown", this._dragStart, this), this.on("mousemove", this._drag, this), 
        this.on("mouseup", this._dragEnd, this);
    }
    function et(t, e) {
        return {
            target: t,
            topTarget: e && e.topTarget
        };
    }
    function nt(t, e, n, i, r, o) {
        var a = t._$handlers;
        if ("function" == typeof n && (r = i, i = n, n = null), !i || !e) return t;
        n = function(t, e) {
            var n = t._$eventProcessor;
            return null != e && n && n.normalizeQuery && (e = n.normalizeQuery(e)), e;
        }(t, n), a[e] || (a[e] = []);
        for (var s = 0; s < a[e].length; s++) if (a[e][s].h === i) return t;
        var l = {
            h: i,
            one: o,
            query: n,
            ctx: r || t,
            callAtLast: i.zrEventfulCallAtLast
        }, u = a[e].length - 1, h = a[e][u];
        return h && h.callAtLast ? a[e].splice(u, 0, l) : a[e].push(l), t;
    }
    function it(t, e, n, i, r, o) {
        var a = i + "-" + r, s = t.length;
        if (o.hasOwnProperty(a)) return o[a];
        if (1 === e) {
            var l = Math.round(Math.log((1 << s) - 1 & ~r) / rh);
            return t[n][l];
        }
        for (var u = i | 1 << n, h = n + 1; i & 1 << h; ) h++;
        for (var c = 0, d = 0, f = 0; s > d; d++) {
            var p = 1 << d;
            p & r || (c += (f % 2 ? -1 : 1) * t[n][d] * it(t, e - 1, h, u, r | p, o), f++);
        }
        return o[a] = c, c;
    }
    function rt(t, e) {
        var n = [ [ t[0], t[1], 1, 0, 0, 0, -e[0] * t[0], -e[0] * t[1] ], [ 0, 0, 0, t[0], t[1], 1, -e[1] * t[0], -e[1] * t[1] ], [ t[2], t[3], 1, 0, 0, 0, -e[2] * t[2], -e[2] * t[3] ], [ 0, 0, 0, t[2], t[3], 1, -e[3] * t[2], -e[3] * t[3] ], [ t[4], t[5], 1, 0, 0, 0, -e[4] * t[4], -e[4] * t[5] ], [ 0, 0, 0, t[4], t[5], 1, -e[5] * t[4], -e[5] * t[5] ], [ t[6], t[7], 1, 0, 0, 0, -e[6] * t[6], -e[6] * t[7] ], [ 0, 0, 0, t[6], t[7], 1, -e[7] * t[6], -e[7] * t[7] ] ], i = {}, r = it(n, 8, 0, 0, 0, i);
        if (0 !== r) {
            for (var o = [], a = 0; 8 > a; a++) for (var s = 0; 8 > s; s++) null == o[s] && (o[s] = 0), 
            o[s] += ((a + s) % 2 ? -1 : 1) * it(n, 7, 0 === a ? 1 : 0, 1 << a, 1 << s, i) / r * e[a];
            return function(t, e, n) {
                var i = e * o[6] + n * o[7] + 1;
                t[0] = (e * o[0] + n * o[1] + o[2]) / i, t[1] = (e * o[3] + n * o[4] + o[5]) / i;
            };
        }
    }
    function ot(t, e, n, i, r) {
        if (e.getBoundingClientRect && Bu.domSupported && !at(e)) {
            var o = e[oh] || (e[oh] = {}), a = function(t, e, n) {
                for (var i = n ? "invTrans" : "trans", r = e[i], o = e.srcCoords, a = !0, s = [], l = [], u = 0; 4 > u; u++) {
                    var h = t[u].getBoundingClientRect(), c = 2 * u, d = h.left, f = h.top;
                    s.push(d, f), a = a && o && d === o[c] && f === o[c + 1], l.push(t[u].offsetLeft, t[u].offsetTop);
                }
                return a && r ? r : (e.srcCoords = s, e[i] = n ? rt(l, s) : rt(s, l));
            }(function(t, e) {
                var n = e.markers;
                if (n) return n;
                n = e.markers = [];
                for (var i = [ "left", "right" ], r = [ "top", "bottom" ], o = 0; 4 > o; o++) {
                    var a = document.createElement("div"), s = a.style, l = o % 2, u = (o >> 1) % 2;
                    s.cssText = [ "position: absolute", "visibility: hidden", "padding: 0", "margin: 0", "border-width: 0", "user-select: none", "width:0", "height:0", i[l] + ":0", r[u] + ":0", i[1 - l] + ":auto", r[1 - u] + ":auto", "" ].join("!important;"), 
                    t.appendChild(a), n.push(a);
                }
                return n;
            }(e, o), o, r);
            if (a) return a(t, n, i), !0;
        }
        return !1;
    }
    function at(t) {
        return "CANVAS" === t.nodeName.toUpperCase();
    }
    function st(t, e, n, i) {
        return n = n || {}, i || !Bu.canvasSupported ? lt(t, e, n) : Bu.browser.firefox && null != e.layerX && e.layerX !== e.offsetX ? (n.zrX = e.layerX, 
        n.zrY = e.layerY) : null != e.offsetX ? (n.zrX = e.offsetX, n.zrY = e.offsetY) : lt(t, e, n), 
        n;
    }
    function lt(t, e, n) {
        if (Bu.domSupported && t.getBoundingClientRect) {
            var i = e.clientX, r = e.clientY;
            if (at(t)) {
                var o = t.getBoundingClientRect();
                return n.zrX = i - o.left, void (n.zrY = r - o.top);
            }
            if (ot(uh, t, i, r)) return n.zrX = uh[0], void (n.zrY = uh[1]);
        }
        n.zrX = n.zrY = 0;
    }
    function ut(t) {
        return t || window.event;
    }
    function ht(t, e, n) {
        if (null != (e = ut(e)).zrX) return e;
        var i = e.type;
        if (i && i.indexOf("touch") >= 0) {
            var r = "touchend" !== i ? e.targetTouches[0] : e.changedTouches[0];
            r && st(t, r, e, n);
        } else st(t, e, e, n), e.zrDelta = e.wheelDelta ? e.wheelDelta / 120 : -(e.detail || 0) / 3;
        var o = e.button;
        return null == e.which && void 0 !== o && lh.test(e.type) && (e.which = 1 & o ? 1 : 2 & o ? 3 : 4 & o ? 2 : 0), 
        e;
    }
    function ct(t, e, n, i) {
        sh ? t.removeEventListener(e, n, i) : t.detachEvent("on" + e, n);
    }
    function dt(t) {
        var e = t[1][0] - t[0][0], n = t[1][1] - t[0][1];
        return Math.sqrt(e * e + n * n);
    }
    function ft() {
        hh(this.event);
    }
    function pt() {}
    function gt(t, e, n) {
        if (t[t.rectHover ? "rectContain" : "contain"](e, n)) {
            for (var i, r = t; r; ) {
                if (r.clipPath && !r.clipPath.contain(e, n)) return !1;
                r.silent && (i = !0), r = r.parent;
            }
            return !i || fh;
        }
        return !1;
    }
    function mt(t, e, n) {
        var i = t.painter;
        return 0 > e || e > i.getWidth() || 0 > n || n > i.getHeight();
    }
    function vt() {
        var t = new mh(6);
        return yt(t), t;
    }
    function yt(t) {
        return t[0] = 1, t[1] = 0, t[2] = 0, t[3] = 1, t[4] = 0, t[5] = 0, t;
    }
    function xt(t, e) {
        return t[0] = e[0], t[1] = e[1], t[2] = e[2], t[3] = e[3], t[4] = e[4], t[5] = e[5], 
        t;
    }
    function _t(t, e, n) {
        var i = e[0] * n[0] + e[2] * n[1], r = e[1] * n[0] + e[3] * n[1], o = e[0] * n[2] + e[2] * n[3], a = e[1] * n[2] + e[3] * n[3], s = e[0] * n[4] + e[2] * n[5] + e[4], l = e[1] * n[4] + e[3] * n[5] + e[5];
        return t[0] = i, t[1] = r, t[2] = o, t[3] = a, t[4] = s, t[5] = l, t;
    }
    function wt(t, e, n) {
        return t[0] = e[0], t[1] = e[1], t[2] = e[2], t[3] = e[3], t[4] = e[4] + n[0], t[5] = e[5] + n[1], 
        t;
    }
    function bt(t, e, n) {
        var i = e[0], r = e[2], o = e[4], a = e[1], s = e[3], l = e[5], u = Math.sin(n), h = Math.cos(n);
        return t[0] = i * h + a * u, t[1] = -i * u + a * h, t[2] = r * h + s * u, t[3] = -r * u + h * s, 
        t[4] = h * o + u * l, t[5] = h * l - u * o, t;
    }
    function St(t, e, n) {
        var i = n[0], r = n[1];
        return t[0] = e[0] * i, t[1] = e[1] * r, t[2] = e[2] * i, t[3] = e[3] * r, t[4] = e[4] * i, 
        t[5] = e[5] * r, t;
    }
    function Mt(t, e) {
        var n = e[0], i = e[2], r = e[4], o = e[1], a = e[3], s = e[5], l = n * a - o * i;
        return l ? (l = 1 / l, t[0] = a * l, t[1] = -o * l, t[2] = -i * l, t[3] = n * l, 
        t[4] = (i * s - a * r) * l, t[5] = (o * r - n * s) * l, t) : null;
    }
    function It(t) {
        return t > xh || -xh > t;
    }
    function Tt(t) {
        this._target = t.target, this._life = t.life || 1e3, this._delay = t.delay || 0, 
        this._initialized = !1, this.loop = null != t.loop && t.loop, this.gap = t.gap || 0, 
        this.easing = t.easing || "Linear", this.onframe = t.onframe, this.ondestroy = t.ondestroy, 
        this.onrestart = t.onrestart, this._pausedTime = 0, this._paused = !1;
    }
    function Ct(t) {
        return 0 > (t = Math.round(t)) ? 0 : t > 255 ? 255 : t;
    }
    function Dt(t) {
        return 0 > t ? 0 : t > 1 ? 1 : t;
    }
    function At(t) {
        return Ct(t.length && "%" === t.charAt(t.length - 1) ? parseFloat(t) / 100 * 255 : parseInt(t, 10));
    }
    function kt(t) {
        return Dt(t.length && "%" === t.charAt(t.length - 1) ? parseFloat(t) / 100 : parseFloat(t));
    }
    function Pt(t, e, n) {
        return 0 > n ? n += 1 : n > 1 && (n -= 1), 1 > 6 * n ? t + (e - t) * n * 6 : 1 > 2 * n ? e : 2 > 3 * n ? t + (e - t) * (2 / 3 - n) * 6 : t;
    }
    function Lt(t, e, n) {
        return t + (e - t) * n;
    }
    function Ot(t, e, n, i, r) {
        return t[0] = e, t[1] = n, t[2] = i, t[3] = r, t;
    }
    function Et(t, e) {
        return t[0] = e[0], t[1] = e[1], t[2] = e[2], t[3] = e[3], t;
    }
    function Bt(t, e) {
        Oh && Et(Oh, e), Oh = Lh.put(t, Oh || e.slice());
    }
    function Nt(t, e) {
        if (t) {
            e = e || [];
            var n = Lh.get(t);
            if (n) return Et(e, n);
            var i = (t += "").replace(/ /g, "").toLowerCase();
            if (i in Ph) return Et(e, Ph[i]), Bt(t, e), e;
            if ("#" !== i.charAt(0)) {
                var r = i.indexOf("("), o = i.indexOf(")");
                if (-1 !== r && o + 1 === i.length) {
                    var a = i.substr(0, r), s = i.substr(r + 1, o - (r + 1)).split(","), l = 1;
                    switch (a) {
                      case "rgba":
                        if (4 !== s.length) return void Ot(e, 0, 0, 0, 1);
                        l = kt(s.pop());

                      case "rgb":
                        return 3 !== s.length ? void Ot(e, 0, 0, 0, 1) : (Ot(e, At(s[0]), At(s[1]), At(s[2]), l), 
                        Bt(t, e), e);

                      case "hsla":
                        return 4 !== s.length ? void Ot(e, 0, 0, 0, 1) : (s[3] = kt(s[3]), zt(s, e), Bt(t, e), 
                        e);

                      case "hsl":
                        return 3 !== s.length ? void Ot(e, 0, 0, 0, 1) : (zt(s, e), Bt(t, e), e);

                      default:
                        return;
                    }
                }
                Ot(e, 0, 0, 0, 1);
            } else {
                var u;
                if (4 === i.length) return (u = parseInt(i.substr(1), 16)) >= 0 && 4095 >= u ? (Ot(e, (3840 & u) >> 4 | (3840 & u) >> 8, 240 & u | (240 & u) >> 4, 15 & u | (15 & u) << 4, 1), 
                Bt(t, e), e) : void Ot(e, 0, 0, 0, 1);
                if (7 === i.length) return (u = parseInt(i.substr(1), 16)) >= 0 && 16777215 >= u ? (Ot(e, (16711680 & u) >> 16, (65280 & u) >> 8, 255 & u, 1), 
                Bt(t, e), e) : void Ot(e, 0, 0, 0, 1);
            }
        }
    }
    function zt(t, e) {
        var n = (parseFloat(t[0]) % 360 + 360) % 360 / 360, i = kt(t[1]), r = kt(t[2]), o = .5 >= r ? r * (i + 1) : r + i - r * i, a = 2 * r - o;
        return Ot(e = e || [], Ct(255 * Pt(a, o, n + 1 / 3)), Ct(255 * Pt(a, o, n)), Ct(255 * Pt(a, o, n - 1 / 3)), 1), 
        4 === t.length && (e[3] = t[3]), e;
    }
    function Rt(t, e) {
        var n = Nt(t);
        if (n) {
            for (var i = 0; 3 > i; i++) n[i] = 0 > e ? n[i] * (1 - e) | 0 : (255 - n[i]) * e + n[i] | 0, 
            n[i] > 255 ? n[i] = 255 : t[i] < 0 && (n[i] = 0);
            return Wt(n, 4 === n.length ? "rgba" : "rgb");
        }
    }
    function Ft(t) {
        var e = Nt(t);
        return e ? ((1 << 24) + (e[0] << 16) + (e[1] << 8) + +e[2]).toString(16).slice(1) : void 0;
    }
    function Vt(t, e, n) {
        if (e && e.length && t >= 0 && 1 >= t) {
            n = n || [];
            var i = t * (e.length - 1), r = Math.floor(i), o = Math.ceil(i), a = e[r], s = e[o], l = i - r;
            return n[0] = Ct(Lt(a[0], s[0], l)), n[1] = Ct(Lt(a[1], s[1], l)), n[2] = Ct(Lt(a[2], s[2], l)), 
            n[3] = Dt(Lt(a[3], s[3], l)), n;
        }
    }
    function Ht(t, e, n) {
        if (e && e.length && t >= 0 && 1 >= t) {
            var i = t * (e.length - 1), r = Math.floor(i), o = Math.ceil(i), a = Nt(e[r]), s = Nt(e[o]), l = i - r, u = Wt([ Ct(Lt(a[0], s[0], l)), Ct(Lt(a[1], s[1], l)), Ct(Lt(a[2], s[2], l)), Dt(Lt(a[3], s[3], l)) ], "rgba");
            return n ? {
                color: u,
                leftIndex: r,
                rightIndex: o,
                value: i
            } : u;
        }
    }
    function Gt(t, e) {
        return (t = Nt(t)) && null != e ? (t[3] = Dt(e), Wt(t, "rgba")) : void 0;
    }
    function Wt(t, e) {
        if (t && t.length) {
            var n = t[0] + "," + t[1] + "," + t[2];
            return ("rgba" === e || "hsva" === e || "hsla" === e) && (n += "," + t[3]), e + "(" + n + ")";
        }
    }
    function Xt(t, e) {
        return t[e];
    }
    function Ut(t, e, n) {
        t[e] = n;
    }
    function Yt(t, e, n) {
        return (e - t) * n + t;
    }
    function qt(t, e, n) {
        return n > .5 ? e : t;
    }
    function jt(t, e, n, i, r) {
        var o = t.length;
        if (1 === r) for (var a = 0; o > a; a++) i[a] = Yt(t[a], e[a], n); else {
            var s = o && t[0].length;
            for (a = 0; o > a; a++) for (var l = 0; s > l; l++) i[a][l] = Yt(t[a][l], e[a][l], n);
        }
    }
    function Zt(t, e, n) {
        var i = t.length, r = e.length;
        if (i !== r) if (i > r) t.length = r; else for (var o = i; r > o; o++) t.push(1 === n ? e[o] : zh.call(e[o]));
        var a = t[0] && t[0].length;
        for (o = 0; o < t.length; o++) if (1 === n) isNaN(t[o]) && (t[o] = e[o]); else for (var s = 0; a > s; s++) isNaN(t[o][s]) && (t[o][s] = e[o][s]);
    }
    function Kt(t, e, n) {
        if (t === e) return !0;
        var i = t.length;
        if (i !== e.length) return !1;
        if (1 === n) {
            for (var r = 0; i > r; r++) if (t[r] !== e[r]) return !1;
        } else {
            var o = t[0].length;
            for (r = 0; i > r; r++) for (var a = 0; o > a; a++) if (t[r][a] !== e[r][a]) return !1;
        }
        return !0;
    }
    function $t(t, e, n, i, r, o, a, s, l) {
        var u = t.length;
        if (1 === l) for (var h = 0; u > h; h++) s[h] = Qt(t[h], e[h], n[h], i[h], r, o, a); else {
            var c = t[0].length;
            for (h = 0; u > h; h++) for (var d = 0; c > d; d++) s[h][d] = Qt(t[h][d], e[h][d], n[h][d], i[h][d], r, o, a);
        }
    }
    function Qt(t, e, n, i, r, o, a) {
        var s = .5 * (n - t), l = .5 * (i - e);
        return (2 * (e - n) + s + l) * a + (-3 * (e - n) - 2 * s - l) * o + s * r + e;
    }
    function Jt(t) {
        if (d(t)) {
            var e = t.length;
            if (d(t[0])) {
                for (var n = [], i = 0; e > i; i++) n.push(zh.call(t[i]));
                return n;
            }
            return zh.call(t);
        }
        return t;
    }
    function te(t) {
        return t[0] = Math.floor(t[0]), t[1] = Math.floor(t[1]), t[2] = Math.floor(t[2]), 
        "rgba(" + t.join(",") + ")";
    }
    function ee(t, e, n, i, r, o) {
        var a = t._getter, s = t._setter, l = "spline" === e, u = i.length;
        if (u) {
            var h, c = d(i[0].value), f = !1, p = !1, g = c ? function(t) {
                var e = t[t.length - 1].value;
                return d(e && e[0]) ? 2 : 1;
            }(i) : 0;
            i.sort(function(t, e) {
                return t.time - e.time;
            }), h = i[u - 1].time;
            for (var m = [], v = [], y = i[0].value, x = !0, _ = 0; u > _; _++) {
                m.push(i[_].time / h);
                var w = i[_].value;
                if (c && Kt(w, y, g) || !c && w === y || (x = !1), y = w, "string" == typeof w) {
                    var b = Nt(w);
                    b ? (w = b, f = !0) : p = !0;
                }
                v.push(w);
            }
            if (o || !x) {
                var S = v[u - 1];
                for (_ = 0; u - 1 > _; _++) c ? Zt(v[_], S, g) : !isNaN(v[_]) || isNaN(S) || p || f || (v[_] = S);
                c && Zt(a(t._target, r), S, g);
                var M, I, T, C, D, A = 0, k = 0;
                if (f) var P = [ 0, 0, 0, 0 ];
                var L = new Tt({
                    target: t._target,
                    life: h,
                    loop: t._loop,
                    delay: t._delay,
                    onframe: function(t, e) {
                        var n;
                        if (0 > e) n = 0; else if (k > e) {
                            for (n = Math.min(A + 1, u - 1); n >= 0 && !(m[n] <= e); n--) ;
                            n = Math.min(n, u - 2);
                        } else {
                            for (n = A; u > n && !(m[n] > e); n++) ;
                            n = Math.min(n - 1, u - 2);
                        }
                        A = n, k = e;
                        var i = m[n + 1] - m[n];
                        if (0 !== i) if (M = (e - m[n]) / i, l) if (T = v[n], I = v[0 === n ? n : n - 1], 
                        C = v[n > u - 2 ? u - 1 : n + 1], D = v[n > u - 3 ? u - 1 : n + 2], c) $t(I, T, C, D, M, M * M, M * M * M, a(t, r), g); else {
                            if (f) o = $t(I, T, C, D, M, M * M, M * M * M, P, 1), o = te(P); else {
                                if (p) return qt(T, C, M);
                                o = Qt(I, T, C, D, M, M * M, M * M * M);
                            }
                            s(t, r, o);
                        } else if (c) jt(v[n], v[n + 1], M, a(t, r), g); else {
                            var o;
                            if (f) jt(v[n], v[n + 1], M, P, 1), o = te(P); else {
                                if (p) return qt(v[n], v[n + 1], M);
                                o = Yt(v[n], v[n + 1], M);
                            }
                            s(t, r, o);
                        }
                    },
                    ondestroy: n
                });
                return e && "spline" !== e && (L.easing = e), L;
            }
        }
    }
    function ne(t, e, n, i, r, o, a, s) {
        function l() {
            --h || o && o();
        }
        w(i) ? (o = r, r = i, i = 0) : _(r) ? (o = r, r = "linear", i = 0) : _(i) ? (o = i, 
        i = 0) : _(n) ? (o = n, n = 500) : n || (n = 500), t.stopAnimation(), function t(e, n, i, r, o, a, s) {
            var l = {}, u = 0;
            for (var h in r) r.hasOwnProperty(h) && (null != i[h] ? b(r[h]) && !d(r[h]) ? t(e, n ? n + "." + h : h, i[h], r[h], o, a, s) : (s ? (l[h] = i[h], 
            ie(e, n, h, r[h])) : l[h] = r[h], u++) : null == r[h] || s || ie(e, n, h, r[h]));
            u > 0 && e.animate(n, !1).when(null == o ? 500 : o, l).delay(a || 0);
        }(t, "", t, e, n, i, s);
        var u = t.animators.slice(), h = u.length;
        h || o && o();
        for (var c = 0; c < u.length; c++) u[c].done(l).start(r, a);
    }
    function ie(t, e, n, i) {
        if (e) {
            var r = {};
            r[e] = {}, r[e][n] = i, t.attr(r);
        } else t.attr(n, i);
    }
    function re(t, e, n, i) {
        0 > n && (t += n, n = -n), 0 > i && (e += i, i = -i), this.x = t, this.y = e, this.width = n, 
        this.height = i;
    }
    function oe(t, e, n, i) {
        var r = e + 1;
        if (r === n) return 1;
        if (i(t[r++], t[e]) < 0) {
            for (;n > r && i(t[r], t[r - 1]) < 0; ) r++;
            !function(t, e, n) {
                for (n--; n > e; ) {
                    var i = t[e];
                    t[e++] = t[n], t[n--] = i;
                }
            }(t, e, r);
        } else for (;n > r && i(t[r], t[r - 1]) >= 0; ) r++;
        return r - e;
    }
    function ae(t, e, n, i, r) {
        for (i === e && i++; n > i; i++) {
            for (var o, a = t[i], s = e, l = i; l > s; ) r(a, t[o = s + l >>> 1]) < 0 ? l = o : s = o + 1;
            var u = i - s;
            switch (u) {
              case 3:
                t[s + 3] = t[s + 2];

              case 2:
                t[s + 2] = t[s + 1];

              case 1:
                t[s + 1] = t[s];
                break;

              default:
                for (;u > 0; ) t[s + u] = t[s + u - 1], u--;
            }
            t[s] = a;
        }
    }
    function se(t, e, n, i, r, o) {
        var a = 0, s = 0, l = 1;
        if (o(t, e[n + r]) > 0) {
            for (s = i - r; s > l && o(t, e[n + r + l]) > 0; ) a = l, 0 >= (l = 1 + (l << 1)) && (l = s);
            l > s && (l = s), a += r, l += r;
        } else {
            for (s = r + 1; s > l && o(t, e[n + r - l]) <= 0; ) a = l, 0 >= (l = 1 + (l << 1)) && (l = s);
            l > s && (l = s);
            var u = a;
            a = r - l, l = r - u;
        }
        for (a++; l > a; ) {
            var h = a + (l - a >>> 1);
            o(t, e[n + h]) > 0 ? a = h + 1 : l = h;
        }
        return l;
    }
    function le(t, e, n, i, r, o) {
        var a = 0, s = 0, l = 1;
        if (o(t, e[n + r]) < 0) {
            for (s = r + 1; s > l && o(t, e[n + r - l]) < 0; ) a = l, 0 >= (l = 1 + (l << 1)) && (l = s);
            l > s && (l = s);
            var u = a;
            a = r - l, l = r - u;
        } else {
            for (s = i - r; s > l && o(t, e[n + r + l]) >= 0; ) a = l, 0 >= (l = 1 + (l << 1)) && (l = s);
            l > s && (l = s), a += r, l += r;
        }
        for (a++; l > a; ) {
            var h = a + (l - a >>> 1);
            o(t, e[n + h]) < 0 ? l = h : a = h + 1;
        }
        return l;
    }
    function ue(t, e) {
        function n(n) {
            var s = o[n], u = a[n], h = o[n + 1], c = a[n + 1];
            a[n] = u + c, n === l - 3 && (o[n + 1] = o[n + 2], a[n + 1] = a[n + 2]), l--;
            var d = le(t[h], t, s, u, 0, e);
            s += d, 0 !== (u -= d) && (0 !== (c = se(t[s + u - 1], t, h, c, c - 1, e)) && (c >= u ? i(s, u, h, c) : r(s, u, h, c)));
        }
        function i(n, i, r, o) {
            var a = 0;
            for (a = 0; i > a; a++) u[a] = t[n + a];
            var l = 0, h = r, c = n;
            if (t[c++] = t[h++], 0 != --o) {
                if (1 === i) {
                    for (a = 0; o > a; a++) t[c + a] = t[h + a];
                    return void (t[c + o] = u[l]);
                }
                for (var d, f, p, g = s; ;) {
                    d = 0, f = 0, p = !1;
                    do {
                        if (e(t[h], u[l]) < 0) {
                            if (t[c++] = t[h++], f++, d = 0, 0 == --o) {
                                p = !0;
                                break;
                            }
                        } else if (t[c++] = u[l++], d++, f = 0, 1 == --i) {
                            p = !0;
                            break;
                        }
                    } while (g > (d | f));
                    if (p) break;
                    do {
                        if (0 !== (d = le(t[h], u, l, i, 0, e))) {
                            for (a = 0; d > a; a++) t[c + a] = u[l + a];
                            if (c += d, l += d, 1 >= (i -= d)) {
                                p = !0;
                                break;
                            }
                        }
                        if (t[c++] = t[h++], 0 == --o) {
                            p = !0;
                            break;
                        }
                        if (0 !== (f = se(u[l], t, h, o, 0, e))) {
                            for (a = 0; f > a; a++) t[c + a] = t[h + a];
                            if (c += f, h += f, 0 === (o -= f)) {
                                p = !0;
                                break;
                            }
                        }
                        if (t[c++] = u[l++], 1 == --i) {
                            p = !0;
                            break;
                        }
                        g--;
                    } while (d >= Kh || f >= Kh);
                    if (p) break;
                    0 > g && (g = 0), g += 2;
                }
                if (1 > (s = g) && (s = 1), 1 === i) {
                    for (a = 0; o > a; a++) t[c + a] = t[h + a];
                    t[c + o] = u[l];
                } else {
                    if (0 === i) throw new Error();
                    for (a = 0; i > a; a++) t[c + a] = u[l + a];
                }
            } else for (a = 0; i > a; a++) t[c + a] = u[l + a];
        }
        function r(n, i, r, o) {
            var a = 0;
            for (a = 0; o > a; a++) u[a] = t[r + a];
            var l = n + i - 1, h = o - 1, c = r + o - 1, d = 0, f = 0;
            if (t[c--] = t[l--], 0 != --i) {
                if (1 === o) {
                    for (f = (c -= i) + 1, d = (l -= i) + 1, a = i - 1; a >= 0; a--) t[f + a] = t[d + a];
                    return void (t[c] = u[h]);
                }
                for (var p = s; ;) {
                    var g = 0, m = 0, v = !1;
                    do {
                        if (e(u[h], t[l]) < 0) {
                            if (t[c--] = t[l--], g++, m = 0, 0 == --i) {
                                v = !0;
                                break;
                            }
                        } else if (t[c--] = u[h--], m++, g = 0, 1 == --o) {
                            v = !0;
                            break;
                        }
                    } while (p > (g | m));
                    if (v) break;
                    do {
                        if (0 !== (g = i - le(u[h], t, n, i, i - 1, e))) {
                            for (i -= g, f = (c -= g) + 1, d = (l -= g) + 1, a = g - 1; a >= 0; a--) t[f + a] = t[d + a];
                            if (0 === i) {
                                v = !0;
                                break;
                            }
                        }
                        if (t[c--] = u[h--], 1 == --o) {
                            v = !0;
                            break;
                        }
                        if (0 !== (m = o - se(t[l], u, 0, o, o - 1, e))) {
                            for (o -= m, f = (c -= m) + 1, d = (h -= m) + 1, a = 0; m > a; a++) t[f + a] = u[d + a];
                            if (1 >= o) {
                                v = !0;
                                break;
                            }
                        }
                        if (t[c--] = t[l--], 0 == --i) {
                            v = !0;
                            break;
                        }
                        p--;
                    } while (g >= Kh || m >= Kh);
                    if (v) break;
                    0 > p && (p = 0), p += 2;
                }
                if (1 > (s = p) && (s = 1), 1 === o) {
                    for (f = (c -= i) + 1, d = (l -= i) + 1, a = i - 1; a >= 0; a--) t[f + a] = t[d + a];
                    t[c] = u[h];
                } else {
                    if (0 === o) throw new Error();
                    for (d = c - (o - 1), a = 0; o > a; a++) t[d + a] = u[a];
                }
            } else for (d = c - (o - 1), a = 0; o > a; a++) t[d + a] = u[a];
        }
        var o, a, s = Kh, l = 0, u = [];
        o = [], a = [], this.mergeRuns = function() {
            for (;l > 1; ) {
                var t = l - 2;
                if (t >= 1 && a[t - 1] <= a[t] + a[t + 1] || t >= 2 && a[t - 2] <= a[t] + a[t - 1]) a[t - 1] < a[t + 1] && t--; else if (a[t] > a[t + 1]) break;
                n(t);
            }
        }, this.forceMergeRuns = function() {
            for (;l > 1; ) {
                var t = l - 2;
                t > 0 && a[t - 1] < a[t + 1] && t--, n(t);
            }
        }, this.pushRun = function(t, e) {
            o[l] = t, a[l] = e, l += 1;
        };
    }
    function he(t, e, n, i) {
        n || (n = 0), i || (i = t.length);
        var r = i - n;
        if (!(2 > r)) {
            var o = 0;
            if (Zh > r) return void ae(t, n, i, n + (o = oe(t, n, i, e)), e);
            var a = new ue(t, e), s = function(t) {
                for (var e = 0; t >= Zh; ) e |= 1 & t, t >>= 1;
                return t + e;
            }(r);
            do {
                if (s > (o = oe(t, n, i, e))) {
                    var l = r;
                    l > s && (l = s), ae(t, n, n + l, n + o, e), o = l;
                }
                a.pushRun(n, o), a.mergeRuns(), r -= o, n += o;
            } while (0 !== r);
            a.forceMergeRuns();
        }
    }
    function ce(t, e) {
        return t.zlevel === e.zlevel ? t.z === e.z ? t.z2 - e.z2 : t.z - e.z : t.zlevel - e.zlevel;
    }
    function de(t, e, n) {
        var i = null == e.x ? 0 : e.x, r = null == e.x2 ? 1 : e.x2, o = null == e.y ? 0 : e.y, a = null == e.y2 ? 0 : e.y2;
        return e.global || (i = i * n.width + n.x, r = r * n.width + n.x, o = o * n.height + n.y, 
        a = a * n.height + n.y), i = isNaN(i) ? 0 : i, r = isNaN(r) ? 1 : r, o = isNaN(o) ? 0 : o, 
        a = isNaN(a) ? 0 : a, t.createLinearGradient(i, o, r, a);
    }
    function fe(t, e, n) {
        var i = n.width, r = n.height, o = Math.min(i, r), a = null == e.x ? .5 : e.x, s = null == e.y ? .5 : e.y, l = null == e.r ? .5 : e.r;
        return e.global || (a = a * i + n.x, s = s * r + n.y, l *= o), t.createRadialGradient(a, s, 0, a, s, l);
    }
    function pe() {
        return !1;
    }
    function ge(t, e, n) {
        var i = Yu(), r = e.getWidth(), o = e.getHeight(), a = i.style;
        return a && (a.position = "absolute", a.left = 0, a.top = 0, a.width = r + "px", 
        a.height = o + "px", i.setAttribute("data-zr-dom-id", t)), i.width = r * n, i.height = o * n, 
        i;
    }
    function me(t) {
        if ("string" == typeof t) {
            var e = hc.get(t);
            return e && e.image;
        }
        return t;
    }
    function ve(t, e, n, i, r) {
        if (t) {
            if ("string" == typeof t) {
                if (e && e.__zrImageSrc === t || !n) return e;
                var o = hc.get(t), a = {
                    hostEl: n,
                    cb: i,
                    cbPayload: r
                };
                return o ? !xe(e = o.image) && o.pending.push(a) : ((e = new Image()).onload = e.onerror = ye, 
                hc.put(t, e.__cachedImgObj = {
                    image: e,
                    pending: [ a ]
                }), e.src = e.__zrImageSrc = t), e;
            }
            return t;
        }
        return e;
    }
    function ye() {
        var t = this.__cachedImgObj;
        this.onload = this.onerror = this.__cachedImgObj = null;
        for (var e = 0; e < t.pending.length; e++) {
            var n = t.pending[e], i = n.cb;
            i && i(this, n.cbPayload), n.hostEl.dirty();
        }
        t.pending.length = 0;
    }
    function xe(t) {
        return t && t.width && t.height;
    }
    function _e(t, e) {
        var n = t + ":" + (e = e || gc);
        if (cc[n]) return cc[n];
        for (var i = (t + "").split("\n"), r = 0, o = 0, a = i.length; a > o; o++) r = Math.max(ke(i[o], e).width, r);
        return dc > fc && (dc = 0, cc = {}), dc++, cc[n] = r, r;
    }
    function we(t, e, n, i, r, o, a, s) {
        return a ? function(t, e, n, i, r, o, a, s) {
            var l = Le(t, {
                rich: a,
                truncate: s,
                font: e,
                textAlign: n,
                textPadding: r,
                textLineHeight: o
            }), u = l.outerWidth, h = l.outerHeight, c = be(0, u, n), d = Se(0, h, i);
            return new re(c, d, u, h);
        }(t, e, n, i, r, o, a, s) : function(t, e, n, i, r, o, a) {
            var s = Pe(t, e, r, o, a), l = _e(t, e);
            r && (l += r[1] + r[3]);
            var u = s.outerHeight, h = be(0, l, n), c = Se(0, u, i), d = new re(h, c, l, u);
            return d.lineHeight = s.lineHeight, d;
        }(t, e, n, i, r, o, s);
    }
    function be(t, e, n) {
        return "right" === n ? t -= e : "center" === n && (t -= e / 2), t;
    }
    function Se(t, e, n) {
        return "middle" === n ? t -= e / 2 : "bottom" === n && (t -= e), t;
    }
    function Me(t, e, n) {
        var i = e.textPosition, r = e.textDistance, o = n.x, a = n.y;
        r = r || 0;
        var s = n.height, l = n.width, u = s / 2, h = "left", c = "top";
        switch (i) {
          case "left":
            o -= r, a += u, h = "right", c = "middle";
            break;

          case "right":
            o += r + l, a += u, c = "middle";
            break;

          case "top":
            o += l / 2, a -= r, h = "center", c = "bottom";
            break;

          case "bottom":
            o += l / 2, a += s + r, h = "center";
            break;

          case "inside":
            o += l / 2, a += u, h = "center", c = "middle";
            break;

          case "insideLeft":
            o += r, a += u, c = "middle";
            break;

          case "insideRight":
            o += l - r, a += u, h = "right", c = "middle";
            break;

          case "insideTop":
            o += l / 2, a += r, h = "center";
            break;

          case "insideBottom":
            o += l / 2, a += s - r, h = "center", c = "bottom";
            break;

          case "insideTopLeft":
            o += r, a += r;
            break;

          case "insideTopRight":
            o += l - r, a += r, h = "right";
            break;

          case "insideBottomLeft":
            o += r, a += s - r, c = "bottom";
            break;

          case "insideBottomRight":
            o += l - r, a += s - r, h = "right", c = "bottom";
        }
        return (t = t || {}).x = o, t.y = a, t.textAlign = h, t.textVerticalAlign = c, t;
    }
    function Ie(t, e, n, i, r) {
        if (!e) return "";
        var o = (t + "").split("\n");
        r = Te(e, n, i, r);
        for (var a = 0, s = o.length; s > a; a++) o[a] = Ce(o[a], r);
        return o.join("\n");
    }
    function Te(t, e, n, i) {
        (i = a({}, i)).font = e;
        n = D(n, "...");
        i.maxIterations = D(i.maxIterations, 2);
        var r = i.minChar = D(i.minChar, 0);
        i.cnCharWidth = _e("国", e);
        var o = i.ascCharWidth = _e("a", e);
        i.placeholder = D(i.placeholder, "");
        for (var s = t = Math.max(0, t - 1), l = 0; r > l && s >= o; l++) s -= o;
        var u = _e(n, e);
        return u > s && (n = "", u = 0), s = t - u, i.ellipsis = n, i.ellipsisWidth = u, 
        i.contentWidth = s, i.containerWidth = t, i;
    }
    function Ce(t, e) {
        var n = e.containerWidth, i = e.font, r = e.contentWidth;
        if (!n) return "";
        var o = _e(t, i);
        if (n >= o) return t;
        for (var a = 0; ;a++) {
            if (r >= o || a >= e.maxIterations) {
                t += e.ellipsis;
                break;
            }
            var s = 0 === a ? De(t, r, e.ascCharWidth, e.cnCharWidth) : o > 0 ? Math.floor(t.length * r / o) : 0;
            o = _e(t = t.substr(0, s), i);
        }
        return "" === t && (t = e.placeholder), t;
    }
    function De(t, e, n, i) {
        for (var r = 0, o = 0, a = t.length; a > o && e > r; o++) {
            var s = t.charCodeAt(o);
            r += s >= 0 && 127 >= s ? n : i;
        }
        return o;
    }
    function Ae(t) {
        return _e("国", t);
    }
    function ke(t, e) {
        return mc.measureText(t, e);
    }
    function Pe(t, e, n, i, r) {
        null != t && (t += "");
        var o = D(i, Ae(e)), a = t ? t.split("\n") : [], s = a.length * o, l = s, u = !0;
        if (n && (l += n[0] + n[2]), t && r) {
            u = !1;
            var h = r.outerHeight, c = r.outerWidth;
            if (null != h && l > h) t = "", a = []; else if (null != c) for (var d = Te(c - (n ? n[1] + n[3] : 0), e, r.ellipsis, {
                minChar: r.minChar,
                placeholder: r.placeholder
            }), f = 0, p = a.length; p > f; f++) a[f] = Ce(a[f], d);
        }
        return {
            lines: a,
            height: s,
            outerHeight: l,
            lineHeight: o,
            canCacheByTextString: u
        };
    }
    function Le(t, e) {
        var n = {
            lines: [],
            width: 0,
            height: 0
        };
        if (null != t && (t += ""), !t) return n;
        for (var i, r = pc.lastIndex = 0; null != (i = pc.exec(t)); ) {
            var o = i.index;
            o > r && Oe(n, t.substring(r, o)), Oe(n, i[2], i[1]), r = pc.lastIndex;
        }
        r < t.length && Oe(n, t.substring(r, t.length));
        var a = n.lines, s = 0, l = 0, u = [], h = e.textPadding, c = e.truncate, d = c && c.outerWidth, f = c && c.outerHeight;
        h && (null != d && (d -= h[1] + h[3]), null != f && (f -= h[0] + h[2]));
        for (var p = 0; p < a.length; p++) {
            for (var g = a[p], m = 0, v = 0, y = 0; y < g.tokens.length; y++) {
                var x = (P = g.tokens[y]).styleName && e.rich[P.styleName] || {}, _ = P.textPadding = x.textPadding, w = P.font = x.font || e.font, b = P.textHeight = D(x.textHeight, Ae(w));
                if (_ && (b += _[0] + _[2]), P.height = b, P.lineHeight = A(x.textLineHeight, e.textLineHeight, b), 
                P.textAlign = x && x.textAlign || e.textAlign, P.textVerticalAlign = x && x.textVerticalAlign || "middle", 
                null != f && s + P.lineHeight > f) return {
                    lines: [],
                    width: 0,
                    height: 0
                };
                P.textWidth = _e(P.text, w);
                var S = x.textWidth, M = null == S || "auto" === S;
                if ("string" == typeof S && "%" === S.charAt(S.length - 1)) P.percentWidth = S, 
                u.push(P), S = 0; else {
                    if (M) {
                        S = P.textWidth;
                        var I = x.textBackgroundColor, T = I && I.image;
                        T && (xe(T = me(T)) && (S = Math.max(S, T.width * b / T.height)));
                    }
                    var C = _ ? _[1] + _[3] : 0;
                    S += C;
                    var k = null != d ? d - v : null;
                    null != k && S > k && (!M || C > k ? (P.text = "", P.textWidth = S = 0) : (P.text = Ie(P.text, k - C, w, c.ellipsis, {
                        minChar: c.minChar
                    }), P.textWidth = _e(P.text, w), S = P.textWidth + C));
                }
                v += P.width = S, x && (m = Math.max(m, P.lineHeight));
            }
            g.width = v, g.lineHeight = m, s += m, l = Math.max(l, v);
        }
        n.outerWidth = n.width = D(e.textWidth, l), n.outerHeight = n.height = D(e.textHeight, s), 
        h && (n.outerWidth += h[1] + h[3], n.outerHeight += h[0] + h[2]);
        for (p = 0; p < u.length; p++) {
            var P, L = (P = u[p]).percentWidth;
            P.width = parseInt(L, 10) / 100 * l;
        }
        return n;
    }
    function Oe(t, e, n) {
        for (var i = "" === e, r = e.split("\n"), o = t.lines, a = 0; a < r.length; a++) {
            var s = r[a], l = {
                styleName: n,
                text: s,
                isLineHolder: !s && !i
            };
            if (a) o.push({
                tokens: [ l ]
            }); else {
                var u = (o[o.length - 1] || (o[0] = {
                    tokens: []
                })).tokens, h = u.length;
                1 === h && u[0].isLineHolder ? u[0] = l : (s || !h || i) && u.push(l);
            }
        }
    }
    function Ee(t, e) {
        var n, i, r, o, a, s = e.x, l = e.y, u = e.width, h = e.height, c = e.r;
        0 > u && (s += u, u = -u), 0 > h && (l += h, h = -h), "number" == typeof c ? n = i = r = o = c : c instanceof Array ? 1 === c.length ? n = i = r = o = c[0] : 2 === c.length ? (n = r = c[0], 
        i = o = c[1]) : 3 === c.length ? (n = c[0], i = o = c[1], r = c[2]) : (n = c[0], 
        i = c[1], r = c[2], o = c[3]) : n = i = r = o = 0, n + i > u && (n *= u / (a = n + i), 
        i *= u / a), r + o > u && (r *= u / (a = r + o), o *= u / a), i + r > h && (i *= h / (a = i + r), 
        r *= h / a), n + o > h && (n *= h / (a = n + o), o *= h / a), t.moveTo(s + n, l), 
        t.lineTo(s + u - i, l), 0 !== i && t.arc(s + u - i, l + i, i, -Math.PI / 2, 0), 
        t.lineTo(s + u, l + h - r), 0 !== r && t.arc(s + u - r, l + h - r, r, 0, Math.PI / 2), 
        t.lineTo(s + o, l + h), 0 !== o && t.arc(s + o, l + h - o, o, Math.PI / 2, Math.PI), 
        t.lineTo(s, l + n), 0 !== n && t.arc(s + n, l + n, n, Math.PI, 1.5 * Math.PI);
    }
    function Be(t) {
        return Ne(t), f(t.rich, Ne), t;
    }
    function Ne(t) {
        if (t) {
            t.font = function(t) {
                var e = (t.fontSize || t.fontFamily) && [ t.fontStyle, t.fontWeight, (t.fontSize || 12) + "px", t.fontFamily || "sans-serif" ].join(" ");
                return e && O(e) || t.textFont || t.font;
            }(t);
            var e = t.textAlign;
            "middle" === e && (e = "center"), t.textAlign = null == e || yc[e] ? e : "left";
            var n = t.textVerticalAlign || t.textBaseline;
            "center" === n && (n = "middle"), t.textVerticalAlign = null == n || xc[n] ? n : "top", 
            t.textPadding && (t.textPadding = P(t.textPadding));
        }
    }
    function ze(t, e, n, i, r, o) {
        i.rich ? function(t, e, n, i, r, o) {
            o !== ec && (e.__attrCachedBy = tc.NONE);
            var a = t.__textCotentBlock;
            (!a || t.__dirtyText) && (a = t.__textCotentBlock = Le(n, i)), function(t, e, n, i, r) {
                var o = n.width, a = n.outerWidth, s = n.outerHeight, l = i.textPadding, u = We(bc, t, i, r), h = u.baseX, c = u.baseY, d = u.textAlign, f = u.textVerticalAlign;
                Re(e, i, r, h, c);
                var p = be(h, a, d), g = Se(c, s, f), m = p, v = g;
                l && (m += l[3], v += l[0]);
                var y = m + o;
                Ve(i) && He(t, e, i, p, g, a, s);
                for (var x = 0; x < n.lines.length; x++) {
                    for (var _, w = n.lines[x], b = w.tokens, S = b.length, M = w.lineHeight, I = w.width, T = 0, C = m, D = y, A = S - 1; S > T && (!(_ = b[T]).textAlign || "left" === _.textAlign); ) Fe(t, e, _, i, M, v, C, "left"), 
                    I -= _.width, C += _.width, T++;
                    for (;A >= 0 && "right" === (_ = b[A]).textAlign; ) Fe(t, e, _, i, M, v, D, "right"), 
                    I -= _.width, D -= _.width, A--;
                    for (C += (o - (C - m) - (y - D) - I) / 2; A >= T; ) _ = b[T], Fe(t, e, _, i, M, v, C + _.width / 2, "center"), 
                    C += _.width, T++;
                    v += M;
                }
            }(t, e, a, i, r);
        }(t, e, n, i, r, o) : function(t, e, n, i, r, o) {
            var a, s = Ve(i), l = !1, u = e.__attrCachedBy === tc.PLAIN_TEXT;
            o !== ec ? (o && (a = o.style, l = !s && u && a), e.__attrCachedBy = s ? tc.NONE : tc.PLAIN_TEXT) : u && (e.__attrCachedBy = tc.NONE);
            var h = i.font || vc;
            l && h === (a.font || vc) || (e.font = h);
            var c = t.__computedFont;
            t.__styleFont !== h && (t.__styleFont = h, c = t.__computedFont = e.font);
            var d = i.textPadding, f = i.textLineHeight, p = t.__textCotentBlock;
            (!p || t.__dirtyText) && (p = t.__textCotentBlock = Pe(n, c, d, f, i.truncate));
            var g = p.outerHeight, m = p.lines, v = p.lineHeight, y = We(bc, t, i, r), x = y.baseX, _ = y.baseY, w = y.textAlign || "left", b = y.textVerticalAlign;
            Re(e, i, r, x, _);
            var S = Se(_, g, b), M = x, I = S;
            if (s || d) {
                var T = _e(n, c);
                d && (T += d[1] + d[3]);
                var C = be(x, T, w);
                s && He(t, e, i, C, S, T, g), d && (M = je(x, w, d), I += d[0]);
            }
            e.textAlign = w, e.textBaseline = "middle", e.globalAlpha = i.opacity || 1;
            for (var D = 0; D < _c.length; D++) {
                var A = _c[D], k = A[0], P = A[1], L = i[k];
                l && L === a[k] || (e[P] = Jh(e, P, L || A[2]));
            }
            I += v / 2;
            var O = i.textStrokeWidth, E = l ? a.textStrokeWidth : null, B = !l || O !== E, N = !l || B || i.textStroke !== a.textStroke, z = Ue(i.textStroke, O), R = Ye(i.textFill);
            if (z && (B && (e.lineWidth = O), N && (e.strokeStyle = z)), R && (l && i.textFill === a.textFill || (e.fillStyle = R)), 
            1 === m.length) z && e.strokeText(m[0], M, I), R && e.fillText(m[0], M, I); else for (D = 0; D < m.length; D++) z && e.strokeText(m[D], M, I), 
            R && e.fillText(m[D], M, I), I += v;
        }(t, e, n, i, r, o);
    }
    function Re(t, e, n, i, r) {
        if (n && e.textRotation) {
            var o = e.textOrigin;
            "center" === o ? (i = n.width / 2 + n.x, r = n.height / 2 + n.y) : o && (i = o[0] + n.x, 
            r = o[1] + n.y), t.translate(i, r), t.rotate(-e.textRotation), t.translate(-i, -r);
        }
    }
    function Fe(t, e, n, i, r, o, a, s) {
        var l = i.rich[n.styleName] || {};
        l.text = n.text;
        var u = n.textVerticalAlign, h = o + r / 2;
        "top" === u ? h = o + n.height / 2 : "bottom" === u && (h = o + r - n.height / 2), 
        !n.isLineHolder && Ve(l) && He(t, e, l, "right" === s ? a - n.width : "center" === s ? a - n.width / 2 : a, h - n.height / 2, n.width, n.height);
        var c = n.textPadding;
        c && (a = je(a, s, c), h -= n.height / 2 - c[2] - n.textHeight / 2), Xe(e, "shadowBlur", A(l.textShadowBlur, i.textShadowBlur, 0)), 
        Xe(e, "shadowColor", l.textShadowColor || i.textShadowColor || "transparent"), Xe(e, "shadowOffsetX", A(l.textShadowOffsetX, i.textShadowOffsetX, 0)), 
        Xe(e, "shadowOffsetY", A(l.textShadowOffsetY, i.textShadowOffsetY, 0)), Xe(e, "textAlign", s), 
        Xe(e, "textBaseline", "middle"), Xe(e, "font", n.font || vc);
        var d = Ue(l.textStroke || i.textStroke, p), f = Ye(l.textFill || i.textFill), p = D(l.textStrokeWidth, i.textStrokeWidth);
        d && (Xe(e, "lineWidth", p), Xe(e, "strokeStyle", d), e.strokeText(n.text, a, h)), 
        f && (Xe(e, "fillStyle", f), e.fillText(n.text, a, h));
    }
    function Ve(t) {
        return !!(t.textBackgroundColor || t.textBorderWidth && t.textBorderColor);
    }
    function He(t, e, n, i, r, o, a) {
        var s = n.textBackgroundColor, l = n.textBorderWidth, u = n.textBorderColor, h = w(s);
        if (Xe(e, "shadowBlur", n.textBoxShadowBlur || 0), Xe(e, "shadowColor", n.textBoxShadowColor || "transparent"), 
        Xe(e, "shadowOffsetX", n.textBoxShadowOffsetX || 0), Xe(e, "shadowOffsetY", n.textBoxShadowOffsetY || 0), 
        h || l && u) {
            e.beginPath();
            var c = n.textBorderRadius;
            c ? Ee(e, {
                x: i,
                y: r,
                width: o,
                height: a,
                r: c
            }) : e.rect(i, r, o, a), e.closePath();
        }
        if (h) if (Xe(e, "fillStyle", s), null != n.fillOpacity) {
            var d = e.globalAlpha;
            e.globalAlpha = n.fillOpacity * n.opacity, e.fill(), e.globalAlpha = d;
        } else e.fill(); else if (b(s)) {
            var f = s.image;
            (f = ve(f, null, t, Ge, s)) && xe(f) && e.drawImage(f, i, r, o, a);
        }
        if (l && u) if (Xe(e, "lineWidth", l), Xe(e, "strokeStyle", u), null != n.strokeOpacity) {
            d = e.globalAlpha;
            e.globalAlpha = n.strokeOpacity * n.opacity, e.stroke(), e.globalAlpha = d;
        } else e.stroke();
    }
    function Ge(t, e) {
        e.image = t;
    }
    function We(t, e, n, i) {
        var r = n.x || 0, o = n.y || 0, a = n.textAlign, s = n.textVerticalAlign;
        if (i) {
            var l = n.textPosition;
            if (l instanceof Array) r = i.x + qe(l[0], i.width), o = i.y + qe(l[1], i.height); else {
                var u = e && e.calculateTextPosition ? e.calculateTextPosition(wc, n, i) : Me(wc, n, i);
                r = u.x, o = u.y, a = a || u.textAlign, s = s || u.textVerticalAlign;
            }
            var h = n.textOffset;
            h && (r += h[0], o += h[1]);
        }
        return (t = t || {}).baseX = r, t.baseY = o, t.textAlign = a, t.textVerticalAlign = s, 
        t;
    }
    function Xe(t, e, n) {
        return t[e] = Jh(t, e, n), t[e];
    }
    function Ue(t, e) {
        return null == t || 0 >= e || "transparent" === t || "none" === t ? null : t.image || t.colorStops ? "#000" : t;
    }
    function Ye(t) {
        return null == t || "none" === t ? null : t.image || t.colorStops ? "#000" : t;
    }
    function qe(t, e) {
        return "string" == typeof t ? t.lastIndexOf("%") >= 0 ? parseFloat(t) / 100 * e : parseFloat(t) : t;
    }
    function je(t, e, n) {
        return "right" === e ? t - n[1] : "center" === e ? t + n[3] / 2 - n[1] / 2 : t + n[3];
    }
    function Ze(t, e) {
        return null != t && (t || e.textBackgroundColor || e.textBorderWidth && e.textBorderColor || e.textPadding);
    }
    function Ke(t) {
        for (var e in t = t || {}, Xh.call(this, t), t) t.hasOwnProperty(e) && "style" !== e && (this[e] = t[e]);
        this.style = new ic(t.style, this), this._rect = null, this.__clipPaths = null;
    }
    function $e(t) {
        Ke.call(this, t);
    }
    function Qe(t) {
        return parseInt(t, 10);
    }
    function Je(t) {
        return "mousewheel" === t && Bu.browser.firefox ? "DOMMouseScroll" : t;
    }
    function tn(t) {
        var e = t.pointerType;
        return "pen" === e || "touch" === e;
    }
    function en(t) {
        t && (t.zrByTouch = !0);
    }
    function nn(t, e) {
        for (var n = e, i = !1; n && 9 !== n.nodeType && !(i = n.domBelongToZr || n !== e && n === t.painterRoot); ) n = n.parentNode;
        return i;
    }
    function rn(t, e) {
        this.type = e.type, this.target = this.currentTarget = t.dom, this.pointerType = e.pointerType, 
        this.clientX = e.clientX, this.clientY = e.clientY;
    }
    function on(t, e) {
        var n = e.domHandlers;
        Bu.pointerEventsSupported ? f(Pc.pointer, function(i) {
            sn(e, i, function(e) {
                n[i].call(t, e);
            });
        }) : (Bu.touchEventsSupported && f(Pc.touch, function(i) {
            sn(e, i, function(r) {
                n[i].call(t, r), function(t) {
                    t.touching = !0, null != t.touchTimer && (clearTimeout(t.touchTimer), t.touchTimer = null), 
                    t.touchTimer = setTimeout(function() {
                        t.touching = !1, t.touchTimer = null;
                    }, 700);
                }(e);
            });
        }), f(Pc.mouse, function(i) {
            sn(e, i, function(r) {
                r = ut(r), e.touching || n[i].call(t, r);
            });
        }));
    }
    function an(t, e) {
        function n(n) {
            sn(e, n, function(i) {
                i = ut(i), nn(t, i.target) || (i = function(t, e) {
                    return ht(t.dom, new rn(t, e), !0);
                }(t, i), e.domHandlers[n].call(t, i));
            }, {
                capture: !0
            });
        }
        Bu.pointerEventsSupported ? f(Lc.pointer, n) : Bu.touchEventsSupported || f(Lc.mouse, n);
    }
    function sn(t, e, n, i) {
        t.mounted[e] = n, t.listenerOpts[e] = i, function(t, e, n, i) {
            sh ? t.addEventListener(e, n, i) : t.attachEvent("on" + e, n);
        }(t.domTarget, Je(e), n, i);
    }
    function ln(t) {
        var e = t.mounted;
        for (var n in e) e.hasOwnProperty(n) && ct(t.domTarget, Je(n), e[n], t.listenerOpts[n]);
        t.mounted = {};
    }
    function un(t, e) {
        if (t._mayPointerCapture = null, kc && t._pointerCapturing ^ e) {
            t._pointerCapturing = e;
            var n = t._globalHandlerScope;
            e ? an(t, n) : ln(n);
        }
    }
    function hn(t, e) {
        this.domTarget = t, this.domHandlers = e, this.mounted = {}, this.listenerOpts = {}, 
        this.touchTimer = null, this.touching = !1;
    }
    function cn(t, e) {
        ih.call(this), this.dom = t, this.painterRoot = e, this._localHandlerScope = new hn(t, Ec), 
        kc && (this._globalHandlerScope = new hn(document, Bc)), this._pointerCapturing = !1, 
        this._mayPointerCapture = null, on(this, this._localHandlerScope);
    }
    function dn(t, e) {
        var n = new Hc(Eu(), t, e);
        return Fc[n.id] = n, n;
    }
    function fn(t) {
        return t instanceof Array ? t : null == t ? [] : [ t ];
    }
    function pn(t, e, n) {
        if (t) {
            t[e] = t[e] || {}, t.emphasis = t.emphasis || {}, t.emphasis[e] = t.emphasis[e] || {};
            for (var i = 0, r = n.length; r > i; i++) {
                var o = n[i];
                !t.emphasis[e].hasOwnProperty(o) && t[e].hasOwnProperty(o) && (t.emphasis[e][o] = t[e][o]);
            }
        }
    }
    function gn(t) {
        return !Xc(t) || Uc(t) || t instanceof Date ? t : t.value;
    }
    function mn(t, e) {
        e = (e || []).slice();
        var n = p(t || [], function(t) {
            return {
                exist: t
            };
        });
        return Wc(e, function(t, i) {
            if (Xc(t)) {
                for (var r = 0; r < n.length; r++) if (!n[r].option && null != t.id && n[r].exist.id === t.id + "") return n[r].option = t, 
                void (e[i] = null);
                for (r = 0; r < n.length; r++) {
                    var o = n[r].exist;
                    if (!(n[r].option || null != o.id && null != t.id || null == t.name || yn(t) || yn(o) || o.name !== t.name + "")) return n[r].option = t, 
                    void (e[i] = null);
                }
            }
        }), Wc(e, function(t) {
            if (Xc(t)) {
                for (var e = 0; e < n.length; e++) {
                    var i = n[e].exist;
                    if (!n[e].option && !yn(i) && null == t.id) {
                        n[e].option = t;
                        break;
                    }
                }
                e >= n.length && n.push({
                    option: t
                });
            }
        }), n;
    }
    function vn(t) {
        var e = t.name;
        return !(!e || !e.indexOf(Yc));
    }
    function yn(t) {
        return Xc(t) && t.id && 0 === (t.id + "").indexOf("\0_ec_\0");
    }
    function xn(t, e) {
        return null != e.dataIndexInside ? e.dataIndexInside : null != e.dataIndex ? x(e.dataIndex) ? p(e.dataIndex, function(e) {
            return t.indexOfRawIndex(e);
        }) : t.indexOfRawIndex(e.dataIndex) : null != e.name ? x(e.name) ? p(e.name, function(e) {
            return t.indexOfName(e);
        }) : t.indexOfName(e.name) : void 0;
    }
    function _n() {
        var t = "__\0ec_inner_" + jc++ + "_" + Math.random().toFixed(5);
        return function(e) {
            return e[t] || (e[t] = {});
        };
    }
    function wn(t, e, n) {
        if (w(e)) {
            var i = {};
            i[e + "Index"] = 0, e = i;
        }
        var r = n && n.defaultMainType;
        !r || bn(e, r + "Index") || bn(e, r + "Id") || bn(e, r + "Name") || (e[r + "Index"] = 0);
        var o = {};
        return Wc(e, function(i, r) {
            i = e[r];
            if ("dataIndex" !== r && "dataIndexInside" !== r) {
                var a = r.match(/^(\w+)(Index|Id|Name)$/) || [], s = a[1], l = (a[2] || "").toLowerCase();
                if (!(!s || !l || null == i || "index" === l && "none" === i || n && n.includeMainTypes && u(n.includeMainTypes, s) < 0)) {
                    var h = {
                        mainType: s
                    };
                    ("index" !== l || "all" !== i) && (h[l] = i);
                    var c = t.queryComponents(h);
                    o[s + "Models"] = c, o[s + "Model"] = c[0];
                }
            } else o[r] = i;
        }), o;
    }
    function bn(t, e) {
        return t && t.hasOwnProperty(e);
    }
    function Sn(t, e, n) {
        t.setAttribute ? t.setAttribute(e, n) : t[e] = n;
    }
    function Mn(t) {
        return "auto" === t ? Bu.domSupported ? "html" : "richText" : t || "html";
    }
    function In(t) {
        var e = {
            main: "",
            sub: ""
        };
        return t && (t = t.split(Zc), e.main = t[0] || "", e.sub = t[1] || ""), e;
    }
    function Tn(t, e) {
        t.$constructor = t, t.extend = function(t) {
            Lu && f(e, function(e) {
                t[e] || console.warn("Method `" + e + "` should be implemented" + (t.type ? " in " + t.type : "") + ".");
            });
            var n = this, i = function() {
                t.$constructor ? t.$constructor.apply(this, arguments) : n.apply(this, arguments);
            };
            return a(i.prototype, t), i.extend = this.extend, i.superCall = Dn, i.superApply = An, 
            h(i, this), i.superClass = n, i;
        };
    }
    function Cn(t) {
        var e = [ "__\0is_clz", $c++, Math.random().toFixed(3) ].join("_");
        t.prototype[e] = !0, Lu && L(!t.isInstance, 'The method "is" can not be defined.'), 
        t.isInstance = function(t) {
            return !(!t || !t[e]);
        };
    }
    function Dn(t, e) {
        var n = k(arguments, 2);
        return this.superClass.prototype[e].apply(t, n);
    }
    function An(t, e, n) {
        return this.superClass.prototype[e].apply(t, n);
    }
    function kn(t, e) {
        e = e || {};
        var n = {};
        if (t.registerClass = function(t, e) {
            if (e) if (function(t) {
                L(/^[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)?$/.test(t), 'componentType "' + t + '" illegal');
            }(e), (e = In(e)).sub) {
                if (e.sub !== Kc) ((function(t) {
                    var e = n[t.main];
                    return e && e[Kc] || ((e = n[t.main] = {})[Kc] = !0), e;
                })(e))[e.sub] = t;
            } else Lu && n[e.main] && console.warn(e.main + " exists."), n[e.main] = t;
            return t;
        }, t.getClass = function(t, e, i) {
            var r = n[t];
            if (r && r[Kc] && (r = e ? r[e] : null), i && !r) throw new Error(e ? "Component " + t + "." + (e || "") + " not exists. Load it first." : t + ".type should be specified.");
            return r;
        }, t.getClassesByMainType = function(t) {
            t = In(t);
            var e = [], i = n[t.main];
            return i && i[Kc] ? f(i, function(t, n) {
                n !== Kc && e.push(t);
            }) : e.push(i), e;
        }, t.hasClass = function(t) {
            return t = In(t), !!n[t.main];
        }, t.getAllClassMainTypes = function() {
            var t = [];
            return f(n, function(e, n) {
                t.push(n);
            }), t;
        }, t.hasSubTypes = function(t) {
            t = In(t);
            var e = n[t.main];
            return e && e[Kc];
        }, t.parseClassType = In, e.registerWhenExtend) {
            var i = t.extend;
            i && (t.extend = function(e) {
                var n = i.call(this, e);
                return t.registerClass(n, e.type);
            });
        }
        return t;
    }
    function Pn(t) {
        return t > -od && od > t;
    }
    function Ln(t) {
        return t > od || -od > t;
    }
    function On(t, e, n, i, r) {
        var o = 1 - r;
        return o * o * (o * t + 3 * r * e) + r * r * (r * i + 3 * o * n);
    }
    function En(t, e, n, i, r) {
        var o = 1 - r;
        return 3 * (((e - t) * o + 2 * (n - e) * r) * o + (i - n) * r * r);
    }
    function Bn(t, e, n, i, r) {
        var o = 6 * n - 12 * e + 6 * t, a = 9 * e + 3 * i - 3 * t - 9 * n, s = 3 * e - 3 * t, l = 0;
        if (Pn(a)) {
            if (Ln(o)) (h = -s / o) >= 0 && 1 >= h && (r[l++] = h);
        } else {
            var u = o * o - 4 * a * s;
            if (Pn(u)) r[0] = -o / (2 * a); else if (u > 0) {
                var h, c = rd(u), d = (-o - c) / (2 * a);
                (h = (-o + c) / (2 * a)) >= 0 && 1 >= h && (r[l++] = h), d >= 0 && 1 >= d && (r[l++] = d);
            }
        }
        return l;
    }
    function Nn(t, e, n, i, r, o) {
        var a = (e - t) * r + t, s = (n - e) * r + e, l = (i - n) * r + n, u = (s - a) * r + a, h = (l - s) * r + s, c = (h - u) * r + u;
        o[0] = t, o[1] = a, o[2] = u, o[3] = c, o[4] = c, o[5] = h, o[6] = l, o[7] = i;
    }
    function zn(t, e, n, i) {
        var r = 1 - i;
        return r * (r * t + 2 * i * e) + i * i * n;
    }
    function Rn(t, e, n, i) {
        return 2 * ((1 - i) * (e - t) + i * (n - e));
    }
    function Fn(t, e, n) {
        var i = t + n - 2 * e;
        return 0 === i ? .5 : (t - e) / i;
    }
    function Vn(t, e, n, i, r) {
        var o = (e - t) * i + t, a = (n - e) * i + e, s = (a - o) * i + o;
        r[0] = t, r[1] = o, r[2] = s, r[3] = s, r[4] = a, r[5] = n;
    }
    function Hn(t, e, n) {
        if (0 !== t.length) {
            var i, r = t[0], o = r[0], a = r[0], s = r[1], l = r[1];
            for (i = 1; i < t.length; i++) r = t[i], o = dd(o, r[0]), a = fd(a, r[0]), s = dd(s, r[1]), 
            l = fd(l, r[1]);
            e[0] = o, e[1] = s, n[0] = a, n[1] = l;
        }
    }
    function Gn(t, e, n, i, r, o) {
        r[0] = dd(t, n), r[1] = dd(e, i), o[0] = fd(t, n), o[1] = fd(e, i);
    }
    function Wn(t, e, n, i, r, o, a, s, l, u) {
        var h, c = Bn, d = On, f = c(t, n, r, a, _d);
        for (l[0] = 1 / 0, l[1] = 1 / 0, u[0] = -1 / 0, u[1] = -1 / 0, h = 0; f > h; h++) {
            var p = d(t, n, r, a, _d[h]);
            l[0] = dd(p, l[0]), u[0] = fd(p, u[0]);
        }
        for (f = c(e, i, o, s, wd), h = 0; f > h; h++) {
            var g = d(e, i, o, s, wd[h]);
            l[1] = dd(g, l[1]), u[1] = fd(g, u[1]);
        }
        l[0] = dd(t, l[0]), u[0] = fd(t, u[0]), l[0] = dd(a, l[0]), u[0] = fd(a, u[0]), 
        l[1] = dd(e, l[1]), u[1] = fd(e, u[1]), l[1] = dd(s, l[1]), u[1] = fd(s, u[1]);
    }
    function Xn(t, e, n, i, r, o, a, s) {
        var l = Fn, u = zn, h = fd(dd(l(t, n, r), 1), 0), c = fd(dd(l(e, i, o), 1), 0), d = u(t, n, r, h), f = u(e, i, o, c);
        a[0] = dd(t, r, d), a[1] = dd(e, o, f), s[0] = fd(t, r, d), s[1] = fd(e, o, f);
    }
    function Un(t, e, n, i, r, o, a, s, l) {
        var u = Q, h = J, c = Math.abs(r - o);
        if (1e-4 > c % md && c > 1e-4) return s[0] = t - n, s[1] = e - i, l[0] = t + n, 
        void (l[1] = e + i);
        if (vd[0] = gd(r) * n + t, vd[1] = pd(r) * i + e, yd[0] = gd(o) * n + t, yd[1] = pd(o) * i + e, 
        u(s, vd, yd), h(l, vd, yd), 0 > (r %= md) && (r += md), 0 > (o %= md) && (o += md), 
        r > o && !a ? o += md : o > r && a && (r += md), a) {
            var d = o;
            o = r, r = d;
        }
        for (var f = 0; o > f; f += Math.PI / 2) f > r && (xd[0] = gd(f) * n + t, xd[1] = pd(f) * i + e, 
        u(s, xd, s), h(l, xd, l));
    }
    function Yn(t, e, n, i, r, o, a) {
        if (0 === r) return !1;
        var s, l = r;
        if (a > e + l && a > i + l || e - l > a && i - l > a || o > t + l && o > n + l || t - l > o && n - l > o) return !1;
        if (t === n) return Math.abs(o - t) <= l / 2;
        var u = (s = (e - i) / (t - n)) * o - a + (t * i - n * e) / (t - n);
        return l / 2 * l / 2 >= u * u / (s * s + 1);
    }
    function qn(t, e, n, i, r, o, a, s, l, u, h) {
        if (0 === l) return !1;
        var c = l;
        if (h > e + c && h > i + c && h > o + c && h > s + c || e - c > h && i - c > h && o - c > h && s - c > h || u > t + c && u > n + c && u > r + c && u > a + c || t - c > u && n - c > u && r - c > u && a - c > u) return !1;
        var d = function(t, e, n, i, r, o, a, s, l, u, h) {
            var c, d, f, p, g, m = .005, v = 1 / 0;
            ud[0] = l, ud[1] = u;
            for (var y = 0; 1 > y; y += .05) hd[0] = On(t, n, r, a, y), hd[1] = On(e, i, o, s, y), 
            v > (p = th(ud, hd)) && (c = y, v = p);
            v = 1 / 0;
            for (var x = 0; 32 > x && !(ad > m); x++) d = c - m, f = c + m, hd[0] = On(t, n, r, a, d), 
            hd[1] = On(e, i, o, s, d), p = th(hd, ud), d >= 0 && v > p ? (c = d, v = p) : (cd[0] = On(t, n, r, a, f), 
            cd[1] = On(e, i, o, s, f), g = th(cd, ud), 1 >= f && v > g ? (c = f, v = g) : m *= .5);
            return h && (h[0] = On(t, n, r, a, c), h[1] = On(e, i, o, s, c)), rd(v);
        }(t, e, n, i, r, o, a, s, u, h, null);
        return c / 2 >= d;
    }
    function jn(t, e, n, i, r, o, a, s, l) {
        if (0 === a) return !1;
        var u = a;
        if (l > e + u && l > i + u && l > o + u || e - u > l && i - u > l && o - u > l || s > t + u && s > n + u && s > r + u || t - u > s && n - u > s && r - u > s) return !1;
        var h = function(t, e, n, i, r, o, a, s, l) {
            var u, h = .005, c = 1 / 0;
            ud[0] = a, ud[1] = s;
            for (var d = 0; 1 > d; d += .05) {
                hd[0] = zn(t, n, r, d), hd[1] = zn(e, i, o, d), c > (m = th(ud, hd)) && (u = d, 
                c = m);
            }
            c = 1 / 0;
            for (var f = 0; 32 > f && !(ad > h); f++) {
                var p = u - h, g = u + h;
                hd[0] = zn(t, n, r, p), hd[1] = zn(e, i, o, p);
                var m = th(hd, ud);
                if (p >= 0 && c > m) u = p, c = m; else {
                    cd[0] = zn(t, n, r, g), cd[1] = zn(e, i, o, g);
                    var v = th(cd, ud);
                    1 >= g && c > v ? (u = g, c = v) : h *= .5;
                }
            }
            return l && (l[0] = zn(t, n, r, u), l[1] = zn(e, i, o, u)), rd(c);
        }(t, e, n, i, r, o, s, l, null);
        return u / 2 >= h;
    }
    function Zn(t) {
        return 0 > (t %= Bd) && (t += Bd), t;
    }
    function Kn(t, e, n, i, r, o, a, s, l) {
        if (0 === a) return !1;
        var u = a;
        s -= t, l -= e;
        var h = Math.sqrt(s * s + l * l);
        if (h - u > n || n > h + u) return !1;
        if (Math.abs(i - r) % Nd < 1e-4) return !0;
        if (o) {
            var c = i;
            i = Zn(r), r = Zn(c);
        } else i = Zn(i), r = Zn(r);
        i > r && (r += Nd);
        var d = Math.atan2(l, s);
        return 0 > d && (d += Nd), d >= i && r >= d || d + Nd >= i && r >= d + Nd;
    }
    function $n(t, e, n, i, r, o) {
        if (o > e && o > i || e > o && i > o) return 0;
        if (i === e) return 0;
        var a = e > i ? 1 : -1, s = (o - e) / (i - e);
        (1 === s || 0 === s) && (a = e > i ? .5 : -.5);
        var l = s * (n - t) + t;
        return l === r ? 1 / 0 : l > r ? a : 0;
    }
    function Qn() {
        var t = Hd[0];
        Hd[0] = Hd[1], Hd[1] = t;
    }
    function Jn(t, e, n, i, r, o, a, s, l, u) {
        if (u > e && u > i && u > o && u > s || e > u && i > u && o > u && s > u) return 0;
        var h = function(t, e, n, i, r, o) {
            var a = i + 3 * (e - n) - t, s = 3 * (n - 2 * e + t), l = 3 * (e - t), u = t - r, h = s * s - 3 * a * l, c = s * l - 9 * a * u, d = l * l - 3 * s * u, f = 0;
            if (Pn(h) && Pn(c)) {
                if (Pn(s)) o[0] = 0; else (M = -l / s) >= 0 && 1 >= M && (o[f++] = M);
            } else {
                var p = c * c - 4 * h * d;
                if (Pn(p)) {
                    var g = c / h, m = -g / 2;
                    (M = -s / a + g) >= 0 && 1 >= M && (o[f++] = M), m >= 0 && 1 >= m && (o[f++] = m);
                } else if (p > 0) {
                    var v = rd(p), y = h * s + 1.5 * a * (-c + v), x = h * s + 1.5 * a * (-c - v);
                    (M = (-s - ((y = 0 > y ? -id(-y, ld) : id(y, ld)) + (x = 0 > x ? -id(-x, ld) : id(x, ld)))) / (3 * a)) >= 0 && 1 >= M && (o[f++] = M);
                } else {
                    var _ = (2 * h * s - 3 * a * c) / (2 * rd(h * h * h)), w = Math.acos(_) / 3, b = rd(h), S = Math.cos(w), M = (-s - 2 * b * S) / (3 * a), I = (m = (-s + b * (S + sd * Math.sin(w))) / (3 * a), 
                    (-s + b * (S - sd * Math.sin(w))) / (3 * a));
                    M >= 0 && 1 >= M && (o[f++] = M), m >= 0 && 1 >= m && (o[f++] = m), I >= 0 && 1 >= I && (o[f++] = I);
                }
            }
            return f;
        }(e, i, o, s, u, Vd);
        if (0 === h) return 0;
        for (var c, d, f = 0, p = -1, g = 0; h > g; g++) {
            var m = Vd[g], v = 0 === m || 1 === m ? .5 : 1;
            l > On(t, n, r, a, m) || (0 > p && (p = Bn(e, i, o, s, Hd), Hd[1] < Hd[0] && p > 1 && Qn(), 
            c = On(e, i, o, s, Hd[0]), p > 1 && (d = On(e, i, o, s, Hd[1]))), f += 2 === p ? m < Hd[0] ? e > c ? v : -v : m < Hd[1] ? c > d ? v : -v : d > s ? v : -v : m < Hd[0] ? e > c ? v : -v : c > s ? v : -v);
        }
        return f;
    }
    function ti(t, e, n, i, r, o, a, s) {
        if (s > e && s > i && s > o || e > s && i > s && o > s) return 0;
        var l = function(t, e, n, i, r) {
            var o = t - 2 * e + n, a = 2 * (e - t), s = t - i, l = 0;
            if (Pn(o)) {
                if (Ln(a)) (h = -s / a) >= 0 && 1 >= h && (r[l++] = h);
            } else {
                var u = a * a - 4 * o * s;
                if (Pn(u)) (h = -a / (2 * o)) >= 0 && 1 >= h && (r[l++] = h); else if (u > 0) {
                    var h, c = rd(u), d = (-a - c) / (2 * o);
                    (h = (-a + c) / (2 * o)) >= 0 && 1 >= h && (r[l++] = h), d >= 0 && 1 >= d && (r[l++] = d);
                }
            }
            return l;
        }(e, i, o, s, Vd);
        if (0 === l) return 0;
        var u = Fn(e, i, o);
        if (u >= 0 && 1 >= u) {
            for (var h = 0, c = zn(e, i, o, u), d = 0; l > d; d++) {
                var f = 0 === Vd[d] || 1 === Vd[d] ? .5 : 1;
                a > zn(t, n, r, Vd[d]) || (h += Vd[d] < u ? e > c ? f : -f : c > o ? f : -f);
            }
            return h;
        }
        f = 0 === Vd[0] || 1 === Vd[0] ? .5 : 1;
        return a > zn(t, n, r, Vd[0]) ? 0 : e > o ? f : -f;
    }
    function ei(t, e, n, i, r, o, a, s) {
        if ((s -= e) > n || -n > s) return 0;
        var l = Math.sqrt(n * n - s * s);
        Vd[0] = -l, Vd[1] = l;
        var u = Math.abs(i - r);
        if (1e-4 > u) return 0;
        if (1e-4 > u % Rd) {
            i = 0, r = Rd;
            var h = o ? 1 : -1;
            return a >= Vd[0] + t && a <= Vd[1] + t ? h : 0;
        }
        if (o) {
            l = i;
            i = Zn(r), r = Zn(l);
        } else i = Zn(i), r = Zn(r);
        i > r && (r += Rd);
        for (var c = 0, d = 0; 2 > d; d++) {
            var f = Vd[d];
            if (f + t > a) {
                var p = Math.atan2(s, f);
                h = o ? 1 : -1;
                0 > p && (p = Rd + p), (p >= i && r >= p || p + Rd >= i && r >= p + Rd) && (p > Math.PI / 2 && p < 1.5 * Math.PI && (h = -h), 
                c += h);
            }
        }
        return c;
    }
    function ni(t, e, n, i, r) {
        for (var o = 0, a = 0, s = 0, l = 0, u = 0, h = 0; h < t.length; ) {
            var c = t[h++];
            switch (c === zd.M && h > 1 && (n || (o += $n(a, s, l, u, i, r))), 1 === h && (l = a = t[h], 
            u = s = t[h + 1]), c) {
              case zd.M:
                a = l = t[h++], s = u = t[h++];
                break;

              case zd.L:
                if (n) {
                    if (Yn(a, s, t[h], t[h + 1], e, i, r)) return !0;
                } else o += $n(a, s, t[h], t[h + 1], i, r) || 0;
                a = t[h++], s = t[h++];
                break;

              case zd.C:
                if (n) {
                    if (qn(a, s, t[h++], t[h++], t[h++], t[h++], t[h], t[h + 1], e, i, r)) return !0;
                } else o += Jn(a, s, t[h++], t[h++], t[h++], t[h++], t[h], t[h + 1], i, r) || 0;
                a = t[h++], s = t[h++];
                break;

              case zd.Q:
                if (n) {
                    if (jn(a, s, t[h++], t[h++], t[h], t[h + 1], e, i, r)) return !0;
                } else o += ti(a, s, t[h++], t[h++], t[h], t[h + 1], i, r) || 0;
                a = t[h++], s = t[h++];
                break;

              case zd.A:
                var d = t[h++], f = t[h++], p = t[h++], g = t[h++], m = t[h++], v = t[h++];
                h += 1;
                var y = 1 - t[h++], x = Math.cos(m) * p + d, _ = Math.sin(m) * g + f;
                h > 1 ? o += $n(a, s, x, _, i, r) : (l = x, u = _);
                var w = (i - d) * g / p + d;
                if (n) {
                    if (Kn(d, f, g, m, m + v, y, e, w, r)) return !0;
                } else o += ei(d, f, g, m, m + v, y, w, r);
                a = Math.cos(m + v) * p + d, s = Math.sin(m + v) * g + f;
                break;

              case zd.R:
                l = a = t[h++], u = s = t[h++];
                x = l + t[h++], _ = u + t[h++];
                if (n) {
                    if (Yn(l, u, x, u, e, i, r) || Yn(x, u, x, _, e, i, r) || Yn(x, _, l, _, e, i, r) || Yn(l, _, l, u, e, i, r)) return !0;
                } else o += $n(x, u, x, _, i, r), o += $n(l, _, l, u, i, r);
                break;

              case zd.Z:
                if (n) {
                    if (Yn(a, s, l, u, e, i, r)) return !0;
                } else o += $n(a, s, l, u, i, r);
                a = l, s = u;
            }
        }
        return n || function(t, e) {
            return Math.abs(t - e) < Fd;
        }(s, u) || (o += $n(a, s, l, u, i, r) || 0), 0 !== o;
    }
    function ii(t) {
        Ke.call(this, t), this.path = null;
    }
    function ri(t, e, n, i, r, o, a, s, l, u, h) {
        var c = l * (Jd / 180), d = Qd(c) * (t - n) / 2 + $d(c) * (e - i) / 2, f = -1 * $d(c) * (t - n) / 2 + Qd(c) * (e - i) / 2, p = d * d / (a * a) + f * f / (s * s);
        p > 1 && (a *= Kd(p), s *= Kd(p));
        var g = (r === o ? -1 : 1) * Kd((a * a * s * s - a * a * f * f - s * s * d * d) / (a * a * f * f + s * s * d * d)) || 0, m = g * a * f / s, v = g * -s * d / a, y = (t + n) / 2 + Qd(c) * m - $d(c) * v, x = (e + i) / 2 + $d(c) * m + Qd(c) * v, _ = nf([ 1, 0 ], [ (d - m) / a, (f - v) / s ]), w = [ (d - m) / a, (f - v) / s ], b = [ (-1 * d - m) / a, (-1 * f - v) / s ], S = nf(w, b);
        ef(w, b) <= -1 && (S = Jd), ef(w, b) >= 1 && (S = 0), 0 === o && S > 0 && (S -= 2 * Jd), 
        1 === o && 0 > S && (S += 2 * Jd), h.addData(u, y, x, a, s, _, S, c, o);
    }
    function oi(t, e) {
        var n = function(t) {
            if (!t) return new Ed();
            for (var e, n = 0, i = 0, r = n, o = i, a = new Ed(), s = Ed.CMD, l = t.match(rf), u = 0; u < l.length; u++) {
                for (var h, c = l[u], d = c.charAt(0), f = c.match(of) || [], p = f.length, g = 0; p > g; g++) f[g] = parseFloat(f[g]);
                for (var m = 0; p > m; ) {
                    var v, y, x, _, w, b, S, M = n, I = i;
                    switch (d) {
                      case "l":
                        n += f[m++], i += f[m++], h = s.L, a.addData(h, n, i);
                        break;

                      case "L":
                        n = f[m++], i = f[m++], h = s.L, a.addData(h, n, i);
                        break;

                      case "m":
                        n += f[m++], i += f[m++], h = s.M, a.addData(h, n, i), r = n, o = i, d = "l";
                        break;

                      case "M":
                        n = f[m++], i = f[m++], h = s.M, a.addData(h, n, i), r = n, o = i, d = "L";
                        break;

                      case "h":
                        n += f[m++], h = s.L, a.addData(h, n, i);
                        break;

                      case "H":
                        n = f[m++], h = s.L, a.addData(h, n, i);
                        break;

                      case "v":
                        i += f[m++], h = s.L, a.addData(h, n, i);
                        break;

                      case "V":
                        i = f[m++], h = s.L, a.addData(h, n, i);
                        break;

                      case "C":
                        h = s.C, a.addData(h, f[m++], f[m++], f[m++], f[m++], f[m++], f[m++]), n = f[m - 2], 
                        i = f[m - 1];
                        break;

                      case "c":
                        h = s.C, a.addData(h, f[m++] + n, f[m++] + i, f[m++] + n, f[m++] + i, f[m++] + n, f[m++] + i), 
                        n += f[m - 2], i += f[m - 1];
                        break;

                      case "S":
                        v = n, y = i;
                        var T = a.len(), C = a.data;
                        e === s.C && (v += n - C[T - 4], y += i - C[T - 3]), h = s.C, M = f[m++], I = f[m++], 
                        n = f[m++], i = f[m++], a.addData(h, v, y, M, I, n, i);
                        break;

                      case "s":
                        v = n, y = i;
                        T = a.len(), C = a.data;
                        e === s.C && (v += n - C[T - 4], y += i - C[T - 3]), h = s.C, M = n + f[m++], I = i + f[m++], 
                        n += f[m++], i += f[m++], a.addData(h, v, y, M, I, n, i);
                        break;

                      case "Q":
                        M = f[m++], I = f[m++], n = f[m++], i = f[m++], h = s.Q, a.addData(h, M, I, n, i);
                        break;

                      case "q":
                        M = f[m++] + n, I = f[m++] + i, n += f[m++], i += f[m++], h = s.Q, a.addData(h, M, I, n, i);
                        break;

                      case "T":
                        v = n, y = i;
                        T = a.len(), C = a.data;
                        e === s.Q && (v += n - C[T - 4], y += i - C[T - 3]), n = f[m++], i = f[m++], h = s.Q, 
                        a.addData(h, v, y, n, i);
                        break;

                      case "t":
                        v = n, y = i;
                        T = a.len(), C = a.data;
                        e === s.Q && (v += n - C[T - 4], y += i - C[T - 3]), n += f[m++], i += f[m++], h = s.Q, 
                        a.addData(h, v, y, n, i);
                        break;

                      case "A":
                        x = f[m++], _ = f[m++], w = f[m++], b = f[m++], S = f[m++], ri(M = n, I = i, n = f[m++], i = f[m++], b, S, x, _, w, h = s.A, a);
                        break;

                      case "a":
                        x = f[m++], _ = f[m++], w = f[m++], b = f[m++], S = f[m++], ri(M = n, I = i, n += f[m++], i += f[m++], b, S, x, _, w, h = s.A, a);
                    }
                }
                ("z" === d || "Z" === d) && (h = s.Z, a.addData(h), n = r, i = o), e = h;
            }
            return a.toStatic(), a;
        }(t);
        return (e = e || {}).buildPath = function(t) {
            if (t.setData) {
                t.setData(n.data), (e = t.getContext()) && t.rebuildPath(e);
            } else {
                var e = t;
                n.rebuildPath(e);
            }
        }, e.applyTransform = function(t) {
            Zd(n, t), this.dirty(!0);
        }, e;
    }
    function ai(t, e) {
        return new ii(oi(t, e));
    }
    function si(t, e, n, i, r, o, a) {
        var s = .5 * (n - t), l = .5 * (i - e);
        return (2 * (e - n) + s + l) * a + (-3 * (e - n) - 2 * s - l) * o + s * r + e;
    }
    function li(t, e, n) {
        var i = e.points, r = e.smooth;
        if (i && i.length >= 2) {
            if (r && "spline" !== r) {
                var o = ff(i, r, n, e.smoothConstraint);
                t.moveTo(i[0][0], i[0][1]);
                for (var a = i.length, s = 0; (n ? a : a - 1) > s; s++) {
                    var l = o[2 * s], u = o[2 * s + 1], h = i[(s + 1) % a];
                    t.bezierCurveTo(l[0], l[1], u[0], u[1], h[0], h[1]);
                }
            } else {
                "spline" === r && (i = df(i, n)), t.moveTo(i[0][0], i[0][1]);
                s = 1;
                for (var c = i.length; c > s; s++) t.lineTo(i[s][0], i[s][1]);
            }
            n && t.closePath();
        }
    }
    function ui(t, e, n) {
        if (e) {
            var i = e.x1, r = e.x2, o = e.y1, a = e.y2;
            t.x1 = i, t.x2 = r, t.y1 = o, t.y2 = a;
            var s = n && n.lineWidth;
            s && (mf(2 * i) === mf(2 * r) && (t.x1 = t.x2 = ci(i, s, !0)), mf(2 * o) === mf(2 * a) && (t.y1 = t.y2 = ci(o, s, !0)));
        }
    }
    function hi(t, e, n) {
        if (e) {
            var i = e.x, r = e.y, o = e.width, a = e.height;
            t.x = i, t.y = r, t.width = o, t.height = a;
            var s = n && n.lineWidth;
            s && (t.x = ci(i, s, !0), t.y = ci(r, s, !0), t.width = Math.max(ci(i + o, s, !1) - t.x, 0 === o ? 0 : 1), 
            t.height = Math.max(ci(r + a, s, !1) - t.y, 0 === a ? 0 : 1));
        }
    }
    function ci(t, e, n) {
        if (!e) return t;
        var i = mf(2 * t);
        return (i + mf(e)) % 2 == 0 ? i / 2 : (i + (n ? 1 : -1)) / 2;
    }
    function di(t, e, n) {
        var i = t.cpx2, r = t.cpy2;
        return null === i || null === r ? [ (n ? En : On)(t.x1, t.cpx1, t.cpx2, t.x2, e), (n ? En : On)(t.y1, t.cpy1, t.cpy2, t.y2, e) ] : [ (n ? Rn : zn)(t.x1, t.cpx1, t.x2, e), (n ? Rn : zn)(t.y1, t.cpy1, t.y2, e) ];
    }
    function fi(t) {
        Ke.call(this, t), this._displayables = [], this._temporaryDisplayables = [], this._cursor = 0, 
        this.notClear = !0;
    }
    function pi(t) {
        return ii.extend(t);
    }
    function gi(t, e) {
        zf[t] = e;
    }
    function mi(t, e, n, i) {
        var r = ai(t, e);
        return n && ("center" === i && (n = yi(n, r.getBoundingRect())), xi(r, n)), r;
    }
    function vi(t, e, n) {
        var i = new $e({
            style: {
                image: t,
                x: e.x,
                y: e.y,
                width: e.width,
                height: e.height
            },
            onload: function(t) {
                if ("center" === n) {
                    var r = {
                        width: t.width,
                        height: t.height
                    };
                    i.setStyle(yi(e, r));
                }
            }
        });
        return i;
    }
    function yi(t, e) {
        var n, i = e.width / e.height, r = t.height * i;
        return r <= t.width ? n = t.height : n = (r = t.width) / i, {
            x: t.x + t.width / 2 - r / 2,
            y: t.y + t.height / 2 - n / 2,
            width: r,
            height: n
        };
    }
    function xi(t, e) {
        if (t.applyTransform) {
            var n = t.getBoundingRect().calculateTransform(e);
            t.applyTransform(n);
        }
    }
    function _i(t) {
        return null != t && "none" !== t;
    }
    function wi(t) {
        var e = t.__hoverStl;
        if (e && !t.__highlighted) {
            var n = t.__zr, i = t.useHoverLayer && n && "canvas" === n.painter.type;
            if (t.__highlighted = i ? "layer" : "plain", !(t.isGroup || !n && t.useHoverLayer)) {
                var r = t, o = t.style;
                i && (o = (r = n.addHover(t)).style), Hi(o), i || function(t) {
                    if (t.__hoverStlDirty) {
                        t.__hoverStlDirty = !1;
                        var e = t.__hoverStl;
                        if (!e) return void (t.__cachedNormalStl = t.__cachedNormalZ2 = null);
                        var n = t.__cachedNormalStl = {};
                        t.__cachedNormalZ2 = t.z2;
                        var i = t.style;
                        for (var r in e) null != e[r] && (n[r] = i[r]);
                        n.fill = i.fill, n.stroke = i.stroke;
                    }
                }(r), o.extendFrom(e), bi(o, e, "fill"), bi(o, e, "stroke"), Vi(o), i || (t.dirty(!1), 
                t.z2 += Lf);
            }
        }
    }
    function bi(t, e, n) {
        !_i(e[n]) && _i(t[n]) && (t[n] = function(t) {
            if ("string" != typeof t) return t;
            var e = Vf.get(t);
            return e || (e = Rt(t, -.1), 1e4 > Hf && (Vf.set(t, e), Hf++)), e;
        }(t[n]));
    }
    function Si(t) {
        var e = t.__highlighted;
        if (e && (t.__highlighted = !1, !t.isGroup)) if ("layer" === e) t.__zr && t.__zr.removeHover(t); else {
            var n = t.style, i = t.__cachedNormalStl;
            i && (Hi(n), t.setStyle(i), Vi(n));
            var r = t.__cachedNormalZ2;
            null != r && t.z2 - r === Lf && (t.z2 = r);
        }
    }
    function Mi(t, e, n) {
        var i, r = Ef, o = Ef;
        t.__highlighted && (r = Of, i = !0), e(t, n), t.__highlighted && (o = Of, i = !0), 
        t.isGroup && t.traverse(function(t) {
            !t.isGroup && e(t, n);
        }), i && t.__highDownOnUpdate && t.__highDownOnUpdate(r, o);
    }
    function Ii(t, e) {
        e = t.__hoverStl = !1 !== e && (t.hoverStyle || e || {}), t.__hoverStlDirty = !0, 
        t.__highlighted && (t.__cachedNormalStl = null, Si(t), wi(t));
    }
    function Ti(t) {
        !ki(this, t) && !this.__highByOuter && Mi(this, wi);
    }
    function Ci(t) {
        !ki(this, t) && !this.__highByOuter && Mi(this, Si);
    }
    function Di(t) {
        this.__highByOuter |= 1 << (t || 0), Mi(this, wi);
    }
    function Ai(t) {
        !(this.__highByOuter &= ~(1 << (t || 0))) && Mi(this, Si);
    }
    function ki(t, e) {
        return t.__highDownSilentOnTouch && e.zrByTouch;
    }
    function Pi(t, e) {
        Li(t, !0), Mi(t, Ii, e);
    }
    function Li(t, e) {
        var n = !1 === e;
        if (t.__highDownSilentOnTouch = t.highDownSilentOnTouch, t.__highDownOnUpdate = t.highDownOnUpdate, 
        !n || t.__highDownDispatcher) {
            var i = n ? "off" : "on";
            t[i]("mouseover", Ti)[i]("mouseout", Ci), t[i]("emphasis", Di)[i]("normal", Ai), 
            t.__highByOuter = t.__highByOuter || 0, t.__highDownDispatcher = !n;
        }
    }
    function Oi(t) {
        return !(!t || !t.__highDownDispatcher);
    }
    function Ei(t) {
        var e = Nf[t];
        return null == e && 32 >= Bf && (e = Nf[t] = Bf++), e;
    }
    function Bi(t, e, n, i, r, o, a) {
        var s, l = (r = r || Pf).labelFetcher, u = r.labelDataIndex, h = r.labelDimIndex, c = r.labelProp, d = n.getShallow("show"), f = i.getShallow("show");
        (d || f) && (l && (s = l.getFormattedLabel(u, "normal", null, h, c)), null == s && (s = _(r.defaultText) ? r.defaultText(u, r) : r.defaultText));
        var p = d ? s : null, g = f ? D(l ? l.getFormattedLabel(u, "emphasis", null, h, c) : null, s) : null;
        (null != p || null != g) && (Ni(t, n, o, r), Ni(e, i, a, r, !0)), t.text = p, e.text = g;
    }
    function Ni(t, e, n, i, r) {
        return zi(t, e, i, r), n && a(t, n), t;
    }
    function zi(t, e, n, i) {
        if ((n = n || Pf).isRectText) {
            var r;
            n.getTextPosition ? r = n.getTextPosition(e, i) : "outside" === (r = e.getShallow("position") || (i ? null : "inside")) && (r = "top"), 
            t.textPosition = r, t.textOffset = e.getShallow("offset");
            var o = e.getShallow("rotate");
            null != o && (o *= Math.PI / 180), t.textRotation = o, t.textDistance = D(e.getShallow("distance"), i ? null : 5);
        }
        var a, s = e.ecModel, l = s && s.option.textStyle, u = function(t) {
            for (var e; t && t !== t.ecModel; ) {
                var n = (t.option || Pf).rich;
                if (n) for (var i in e = e || {}, n) n.hasOwnProperty(i) && (e[i] = 1);
                t = t.parentModel;
            }
            return e;
        }(e);
        if (u) for (var h in a = {}, u) if (u.hasOwnProperty(h)) {
            var c = e.getModel([ "rich", h ]);
            Ri(a[h] = {}, c, l, n, i);
        }
        return t.rich = a, Ri(t, e, l, n, i, !0), n.forceRich && !n.textStyle && (n.textStyle = {}), 
        t;
    }
    function Ri(t, e, n, i, r, o) {
        n = !r && n || Pf, t.textFill = Fi(e.getShallow("color"), i) || n.color, t.textStroke = Fi(e.getShallow("textBorderColor"), i) || n.textBorderColor, 
        t.textStrokeWidth = D(e.getShallow("textBorderWidth"), n.textBorderWidth), r || (o && (t.insideRollbackOpt = i, 
        Vi(t)), null == t.textFill && (t.textFill = i.autoColor)), t.fontStyle = e.getShallow("fontStyle") || n.fontStyle, 
        t.fontWeight = e.getShallow("fontWeight") || n.fontWeight, t.fontSize = e.getShallow("fontSize") || n.fontSize, 
        t.fontFamily = e.getShallow("fontFamily") || n.fontFamily, t.textAlign = e.getShallow("align"), 
        t.textVerticalAlign = e.getShallow("verticalAlign") || e.getShallow("baseline"), 
        t.textLineHeight = e.getShallow("lineHeight"), t.textWidth = e.getShallow("width"), 
        t.textHeight = e.getShallow("height"), t.textTag = e.getShallow("tag"), o && i.disableBox || (t.textBackgroundColor = Fi(e.getShallow("backgroundColor"), i), 
        t.textPadding = e.getShallow("padding"), t.textBorderColor = Fi(e.getShallow("borderColor"), i), 
        t.textBorderWidth = e.getShallow("borderWidth"), t.textBorderRadius = e.getShallow("borderRadius"), 
        t.textBoxShadowColor = e.getShallow("shadowColor"), t.textBoxShadowBlur = e.getShallow("shadowBlur"), 
        t.textBoxShadowOffsetX = e.getShallow("shadowOffsetX"), t.textBoxShadowOffsetY = e.getShallow("shadowOffsetY")), 
        t.textShadowColor = e.getShallow("textShadowColor") || n.textShadowColor, t.textShadowBlur = e.getShallow("textShadowBlur") || n.textShadowBlur, 
        t.textShadowOffsetX = e.getShallow("textShadowOffsetX") || n.textShadowOffsetX, 
        t.textShadowOffsetY = e.getShallow("textShadowOffsetY") || n.textShadowOffsetY;
    }
    function Fi(t, e) {
        return "auto" !== t ? t : e && e.autoColor ? e.autoColor : null;
    }
    function Vi(t) {
        var e, n = t.textPosition, i = t.insideRollbackOpt;
        if (i && null == t.textFill) {
            var r = i.autoColor, o = i.isRectText, a = i.useInsideStyle, s = !1 !== a && (!0 === a || o && n && "string" == typeof n && n.indexOf("inside") >= 0), l = !s && null != r;
            (s || l) && (e = {
                textFill: t.textFill,
                textStroke: t.textStroke,
                textStrokeWidth: t.textStrokeWidth
            }), s && (t.textFill = "#fff", null == t.textStroke && (t.textStroke = r, null == t.textStrokeWidth && (t.textStrokeWidth = 2))), 
            l && (t.textFill = r);
        }
        t.insideRollback = e;
    }
    function Hi(t) {
        var e = t.insideRollback;
        e && (t.textFill = e.textFill, t.textStroke = e.textStroke, t.textStrokeWidth = e.textStrokeWidth, 
        t.insideRollback = null);
    }
    function Gi(t, e) {
        var n = e && e.getModel("textStyle");
        return O([ t.fontStyle || n && n.getShallow("fontStyle") || "", t.fontWeight || n && n.getShallow("fontWeight") || "", (t.fontSize || n && n.getShallow("fontSize") || 12) + "px", t.fontFamily || n && n.getShallow("fontFamily") || "sans-serif" ].join(" "));
    }
    function Wi(t, e, n, i, r, o) {
        if ("function" == typeof r && (o = r, r = null), i && i.isAnimationEnabled()) {
            var a = t ? "Update" : "", s = i.getShallow("animationDuration" + a), l = i.getShallow("animationEasing" + a), u = i.getShallow("animationDelay" + a);
            "function" == typeof u && (u = u(r, i.getAnimationDelayParams ? i.getAnimationDelayParams(e, r) : null)), 
            "function" == typeof s && (s = s(r)), s > 0 ? e.animateTo(n, s, u || 0, l, o, !!o) : (e.stopAnimation(), 
            e.attr(n), o && o());
        } else e.stopAnimation(), e.attr(n), o && o();
    }
    function Xi(t, e, n, i, r) {
        Wi(!0, t, e, n, i, r);
    }
    function Ui(t, e, n, i, r) {
        Wi(!1, t, e, n, i, r);
    }
    function Yi(t, e, n) {
        return e && !d(e) && (e = _h.getLocalTransform(e)), n && (e = Mt([], e)), $([], t, e);
    }
    function qi(t, e, n) {
        function i(t) {
            var e = {
                position: H(t.position),
                rotation: t.rotation
            };
            return t.shape && (e.shape = a({}, t.shape)), e;
        }
        if (t && e) {
            var r = function(t) {
                var e = {};
                return t.traverse(function(t) {
                    !t.isGroup && t.anid && (e[t.anid] = t);
                }), e;
            }(t);
            e.traverse(function(t) {
                if (!t.isGroup && t.anid) {
                    var e = r[t.anid];
                    if (e) {
                        var o = i(t);
                        t.attr(i(e)), Xi(t, o, n, t.dataIndex);
                    }
                }
            });
        }
    }
    function ji(t, e, n) {
        var i = (e = a({
            rectHover: !0
        }, e)).style = {
            strokeNoScale: !0
        };
        return n = n || {
            x: -1,
            y: -1,
            width: 2,
            height: 2
        }, t ? 0 === t.indexOf("image://") ? (i.image = t.slice(8), s(i, n), new $e(e)) : mi(t.replace("path://", ""), e, n, "center") : void 0;
    }
    function Zi(t, e, n, i, r, o, a, s) {
        var l = n - t, u = i - e, h = a - r, c = s - o, d = Ki(h, c, l, u);
        if (function(t) {
            return 1e-6 >= t && t >= -1e-6;
        }(d)) return !1;
        var f = t - r, p = e - o, g = Ki(f, p, l, u) / d;
        if (0 > g || g > 1) return !1;
        var m = Ki(f, p, h, c) / d;
        return !(0 > m || m > 1);
    }
    function Ki(t, e, n, i) {
        return t * i - n * e;
    }
    function $i(t, e, n) {
        this.parentModel = e, this.ecModel = n, this.option = t;
    }
    function Qi(e, n, i) {
        for (var r = 0; r < n.length && (!n[r] || null != (e = e && "object" == t(e) ? e[n[r]] : null)); r++) ;
        return null == e && i && (e = i.get(n)), e;
    }
    function Ji(t, e) {
        var n = jf(t).getParent;
        return n ? n.call(t, e) : t.parentModel;
    }
    function tr(t) {
        return [ t || "", Zf++, Math.random().toFixed(5) ].join("_");
    }
    function er(t, e, n, i) {
        var r = e[1] - e[0], o = n[1] - n[0];
        if (0 === r) return 0 === o ? n[0] : (n[0] + n[1]) / 2;
        if (i) if (r > 0) {
            if (t <= e[0]) return n[0];
            if (t >= e[1]) return n[1];
        } else {
            if (t >= e[0]) return n[0];
            if (t <= e[1]) return n[1];
        } else {
            if (t === e[0]) return n[0];
            if (t === e[1]) return n[1];
        }
        return (t - e[0]) / r * o + n[0];
    }
    function nr(t, e) {
        switch (t) {
          case "center":
          case "middle":
            t = "50%";
            break;

          case "left":
          case "top":
            t = "0%";
            break;

          case "right":
          case "bottom":
            t = "100%";
        }
        return "string" == typeof t ? function(t) {
            return t.replace(/^\s+|\s+$/g, "");
        }(t).match(/%$/) ? parseFloat(t) / 100 * e : parseFloat(t) : null == t ? NaN : +t;
    }
    function ir(t, e, n) {
        return null == e && (e = 10), e = Math.min(Math.max(0, e), 20), t = (+t).toFixed(e), 
        n ? t : +t;
    }
    function rr(t) {
        if (t = +t, isNaN(t)) return 0;
        for (var e = 1, n = 0; Math.round(t * e) / e !== t; ) e *= 10, n++;
        return n;
    }
    function or(t) {
        var e = t.toString(), n = e.indexOf("e");
        if (n > 0) {
            var i = +e.slice(n + 1);
            return 0 > i ? -i : 0;
        }
        var r = e.indexOf(".");
        return 0 > r ? 0 : e.length - 1 - r;
    }
    function ar(t, e) {
        var n = Math.log, i = Math.LN10, r = Math.floor(n(t[1] - t[0]) / i), o = Math.round(n(Math.abs(e[1] - e[0])) / i), a = Math.min(Math.max(-r + o, 0), 20);
        return isFinite(a) ? a : 20;
    }
    function sr(t, e, n) {
        if (!t[e]) return 0;
        var i = g(t, function(t, e) {
            return t + (isNaN(e) ? 0 : e);
        }, 0);
        if (0 === i) return 0;
        for (var r = Math.pow(10, n), o = p(t, function(t) {
            return (isNaN(t) ? 0 : t) / i * r * 100;
        }), a = 100 * r, s = p(o, function(t) {
            return Math.floor(t);
        }), l = g(s, function(t, e) {
            return t + e;
        }, 0), u = p(o, function(t, e) {
            return t - s[e];
        }); a > l; ) {
            for (var h = Number.NEGATIVE_INFINITY, c = null, d = 0, f = u.length; f > d; ++d) u[d] > h && (h = u[d], 
            c = d);
            ++s[c], u[c] = 0, ++l;
        }
        return s[e] / r;
    }
    function lr(t) {
        var e = 2 * Math.PI;
        return (t % e + e) % e;
    }
    function ur(t) {
        return t > -Kf && Kf > t;
    }
    function hr(t) {
        if (t instanceof Date) return t;
        if ("string" == typeof t) {
            var e = $f.exec(t);
            if (!e) return new Date(NaN);
            if (e[8]) {
                var n = +e[4] || 0;
                return "Z" !== e[8].toUpperCase() && (n -= e[8].slice(0, 3)), new Date(Date.UTC(+e[1], +(e[2] || 1) - 1, +e[3] || 1, n, +(e[5] || 0), +e[6] || 0, +e[7] || 0));
            }
            return new Date(+e[1], +(e[2] || 1) - 1, +e[3] || 1, +e[4] || 0, +(e[5] || 0), +e[6] || 0, +e[7] || 0);
        }
        return new Date(null == t ? NaN : Math.round(t));
    }
    function cr(t) {
        return Math.pow(10, dr(t));
    }
    function dr(t) {
        if (0 === t) return 0;
        var e = Math.floor(Math.log(t) / Math.LN10);
        return t / Math.pow(10, e) >= 10 && e++, e;
    }
    function fr(t, e) {
        var n = dr(t), i = Math.pow(10, n), r = t / i;
        return t = (e ? 1.5 > r ? 1 : 2.5 > r ? 2 : 4 > r ? 3 : 7 > r ? 5 : 10 : 1 > r ? 1 : 2 > r ? 2 : 3 > r ? 3 : 5 > r ? 5 : 10) * i, 
        n >= -20 ? +t.toFixed(0 > n ? -n : 0) : t;
    }
    function pr(t) {
        return isNaN(t) ? "-" : (t = (t + "").split("."))[0].replace(/(\d{1,3})(?=(?:\d{3})+(?!\d))/g, "$1,") + (t.length > 1 ? "." + t[1] : "");
    }
    function gr(t, e) {
        return t = (t || "").toLowerCase().replace(/-(.)/g, function(t, e) {
            return e.toUpperCase();
        }), e && t && (t = t.charAt(0).toUpperCase() + t.slice(1)), t;
    }
    function mr(t) {
        return null == t ? "" : (t + "").replace(tp, function(t, e) {
            return ep[e];
        });
    }
    function vr(t, e, n) {
        x(e) || (e = [ e ]);
        var i = e.length;
        if (!i) return "";
        for (var r = e[0].$vars || [], o = 0; o < r.length; o++) {
            var a = np[o];
            t = t.replace(ip(a), ip(a, 0));
        }
        for (var s = 0; i > s; s++) for (var l = 0; l < r.length; l++) {
            var u = e[s][r[l]];
            t = t.replace(ip(np[l], s), n ? mr(u) : u);
        }
        return t;
    }
    function yr(t, e) {
        var n = (t = w(t) ? {
            color: t,
            extraCssText: e
        } : t || {}).color, i = t.type, r = (e = t.extraCssText, t.renderMode || "html"), o = t.markerId || "X";
        return n ? "html" === r ? "subItem" === i ? '<span style="display:inline-block;vertical-align:middle;margin-right:8px;margin-left:3px;border-radius:4px;width:4px;height:4px;background-color:' + mr(n) + ";" + (e || "") + '"></span>' : '<span style="display:inline-block;margin-right:5px;border-radius:10px;width:10px;height:10px;background-color:' + mr(n) + ";" + (e || "") + '"></span>' : {
            renderMode: r,
            content: "{marker" + o + "|}  ",
            style: {
                color: n
            }
        } : "";
    }
    function xr(t, e) {
        return "0000".substr(0, e - (t += "").length) + t;
    }
    function _r(t, e, n) {
        ("week" === t || "month" === t || "quarter" === t || "half-year" === t || "year" === t) && (t = "MM-dd\nyyyy");
        var i = hr(e), r = n ? "UTC" : "", o = i["get" + r + "FullYear"](), a = i["get" + r + "Month"]() + 1, s = i["get" + r + "Date"](), l = i["get" + r + "Hours"](), u = i["get" + r + "Minutes"](), h = i["get" + r + "Seconds"](), c = i["get" + r + "Milliseconds"]();
        return t.replace("MM", xr(a, 2)).replace("M", a).replace("yyyy", o).replace("yy", o % 100).replace("dd", xr(s, 2)).replace("d", s).replace("hh", xr(l, 2)).replace("h", l).replace("mm", xr(u, 2)).replace("m", u).replace("ss", xr(h, 2)).replace("s", h).replace("SSS", xr(c, 3));
    }
    function wr(t, e) {
        if ("_blank" === e || "blank" === e) {
            var n = window.open();
            n.opener = null, n.location = t;
        } else window.open(t, e);
    }
    function br(t, e, n, i, r) {
        var o = 0, a = 0;
        null == i && (i = 1 / 0), null == r && (r = 1 / 0);
        var s = 0;
        e.eachChild(function(l, u) {
            var h, c, d = l.position, f = l.getBoundingRect(), p = e.childAt(u + 1), g = p && p.getBoundingRect();
            if ("horizontal" === t) {
                var m = f.width + (g ? -g.x + f.x : 0);
                (h = o + m) > i || l.newline ? (o = 0, h = m, a += s + n, s = f.height) : s = Math.max(s, f.height);
            } else {
                var v = f.height + (g ? -g.y + f.y : 0);
                (c = a + v) > r || l.newline ? (o += s + n, a = 0, c = v, s = f.width) : s = Math.max(s, f.width);
            }
            l.newline || (d[0] = o, d[1] = a, "horizontal" === t ? o = h + n : a = c + n);
        });
    }
    function Sr(t, e, n) {
        n = Jf(n || 0);
        var i = e.width, r = e.height, o = nr(t.left, i), a = nr(t.top, r), s = nr(t.right, i), l = nr(t.bottom, r), u = nr(t.width, i), h = nr(t.height, r), c = n[2] + n[0], d = n[1] + n[3], f = t.aspect;
        switch (isNaN(u) && (u = i - s - d - o), isNaN(h) && (h = r - l - c - a), null != f && (isNaN(u) && isNaN(h) && (f > i / r ? u = .8 * i : h = .8 * r), 
        isNaN(u) && (u = f * h), isNaN(h) && (h = u / f)), isNaN(o) && (o = i - s - u - d), 
        isNaN(a) && (a = r - l - h - c), t.left || t.right) {
          case "center":
            o = i / 2 - u / 2 - n[3];
            break;

          case "right":
            o = i - u - d;
        }
        switch (t.top || t.bottom) {
          case "middle":
          case "center":
            a = r / 2 - h / 2 - n[0];
            break;

          case "bottom":
            a = r - h - c;
        }
        o = o || 0, a = a || 0, isNaN(u) && (u = i - d - o - (s || 0)), isNaN(h) && (h = r - c - a - (l || 0));
        var p = new re(o + n[3], a + n[0], u, h);
        return p.margin = n, p;
    }
    function Mr(t, e, n) {
        function i(n, i) {
            var a = {}, l = 0, u = {}, h = 0;
            if (ap(n, function(e) {
                u[e] = t[e];
            }), ap(n, function(t) {
                r(e, t) && (a[t] = u[t] = e[t]), o(a, t) && l++, o(u, t) && h++;
            }), s[i]) return o(e, n[1]) ? u[n[2]] = null : o(e, n[2]) && (u[n[1]] = null), u;
            if (2 !== h && l) {
                if (l >= 2) return a;
                for (var c = 0; c < n.length; c++) {
                    var d = n[c];
                    if (!r(a, d) && r(t, d)) {
                        a[d] = t[d];
                        break;
                    }
                }
                return a;
            }
            return u;
        }
        function r(t, e) {
            return t.hasOwnProperty(e);
        }
        function o(t, e) {
            return null != t[e] && "auto" !== t[e];
        }
        function a(t, e, n) {
            ap(t, function(t) {
                e[t] = n[t];
            });
        }
        !b(n) && (n = {});
        var s = n.ignoreSize;
        !x(s) && (s = [ s, s ]);
        var l = i(lp[0], 0), u = i(lp[1], 1);
        a(lp[0], t, l), a(lp[1], t, u);
    }
    function Ir(t) {
        return function(t, e) {
            return e && t && ap(sp, function(n) {
                e.hasOwnProperty(n) && (t[n] = e[n]);
            }), t;
        }({}, t);
    }
    function Tr(t) {
        this.fromDataset = t.fromDataset, this.data = t.data || (t.sourceFormat === _p ? {} : []), 
        this.sourceFormat = t.sourceFormat || wp, this.seriesLayoutBy = t.seriesLayoutBy || Sp, 
        this.dimensionsDefine = t.dimensionsDefine, this.encodeDefine = t.encodeDefine && z(t.encodeDefine), 
        this.startIndex = t.startIndex || 0, this.dimensionsDetectCount = t.dimensionsDetectCount;
    }
    function Cr(t) {
        var e = t.option, n = e.data, i = M(n) ? bp : vp, r = !1, o = e.seriesLayoutBy, a = e.sourceHeader, s = e.dimensions, l = Lr(t);
        if (l) {
            var u = l.option;
            n = u.source, i = Tp(l).sourceFormat, r = !0, o = o || u.seriesLayoutBy, null == a && (a = u.sourceHeader), 
            s = s || u.dimensions;
        }
        var h = function(t, e, n, i, r) {
            if (!t) return {
                dimensionsDefine: Dr(r)
            };
            var o, a;
            if (e === yp) "auto" === i || null == i ? Ar(function(t) {
                null != t && "-" !== t && (w(t) ? null == a && (a = 1) : a = 0);
            }, n, t, 10) : a = i ? 1 : 0, r || 1 !== a || (r = [], Ar(function(t, e) {
                r[e] = null != t ? t : "";
            }, n, t)), o = r ? r.length : n === Mp ? t.length : t[0] ? t[0].length : null; else if (e === xp) r || (r = function(t) {
                for (var e, n = 0; n < t.length && !(e = t[n++]); ) ;
                if (e) {
                    var i = [];
                    return f(e, function(t, e) {
                        i.push(e);
                    }), i;
                }
            }(t)); else if (e === _p) r || (r = [], f(t, function(t, e) {
                r.push(e);
            })); else if (e === vp) {
                var s = gn(t[0]);
                o = x(s) && s.length || 1;
            } else e === bp && Lu && L(!!r, "dimensions must be given if data is TypedArray.");
            return {
                startIndex: a,
                dimensionsDefine: Dr(r),
                dimensionsDetectCount: o
            };
        }(n, i, o, a, s);
        Tp(t).source = new Tr({
            data: n,
            fromDataset: r,
            seriesLayoutBy: o,
            sourceFormat: i,
            dimensionsDefine: h.dimensionsDefine,
            startIndex: h.startIndex,
            dimensionsDetectCount: h.dimensionsDetectCount,
            encodeDefine: e.encode
        });
    }
    function Dr(t) {
        if (t) {
            var e = z();
            return p(t, function(t) {
                if (null == (t = a({}, b(t) ? t : {
                    name: t
                })).name) return t;
                t.name += "", null == t.displayName && (t.displayName = t.name);
                var n = e.get(t.name);
                return n ? t.name += "-" + n.count++ : e.set(t.name, {
                    count: 1
                }), t;
            });
        }
    }
    function Ar(t, e, n, i) {
        if (null == i && (i = 1 / 0), e === Mp) for (var r = 0; r < n.length && i > r; r++) t(n[r] ? n[r][0] : null, r); else {
            var o = n[0] || [];
            for (r = 0; r < o.length && i > r; r++) t(o[r], r);
        }
    }
    function kr(t, e, n) {
        function i(t, e, n) {
            for (var i = 0; n > i; i++) t.push(e + i);
        }
        function r(t) {
            var e = t.dimsDef;
            return e ? e.length : 1;
        }
        var o = {}, a = Lr(e);
        if (!a || !t) return o;
        var s, l, u = [], h = [], c = e.ecModel, d = Tp(c).datasetMap, p = a.uid + "_" + n.seriesLayoutBy;
        f(t = t.slice(), function(e, n) {
            !b(e) && (t[n] = {
                name: e
            }), "ordinal" === e.type && null == s && (s = n, l = r(t[n])), o[e.name] = [];
        });
        var g = d.get(p) || d.set(p, {
            categoryWayDim: l,
            valueWayDim: 0
        });
        return f(t, function(t, e) {
            var n = t.name, a = r(t);
            if (null == s) {
                var l = g.valueWayDim;
                i(o[n], l, a), i(h, l, a), g.valueWayDim += a;
            } else if (s === e) i(o[n], 0, a), i(u, 0, a); else {
                l = g.categoryWayDim;
                i(o[n], l, a), i(h, l, a), g.categoryWayDim += a;
            }
        }), u.length && (o.itemName = u), h.length && (o.seriesName = h), o;
    }
    function Pr(t, e, n) {
        var i = {};
        if (!Lr(t)) return i;
        var r, o = e.sourceFormat, a = e.dimensionsDefine;
        (o === xp || o === _p) && f(a, function(t, e) {
            "name" === (b(t) ? t.name : t) && (r = e);
        });
        var s = function() {
            function t(t) {
                return null != t.v && null != t.n;
            }
            for (var i = {}, s = {}, l = [], u = 0, h = Math.min(5, n); h > u; u++) {
                var c = Er(e.data, o, e.seriesLayoutBy, a, e.startIndex, u);
                l.push(c);
                var d = c === Ip.Not;
                if (d && null == i.v && u !== r && (i.v = u), (null == i.n || i.n === i.v || !d && l[i.n] === Ip.Not) && (i.n = u), 
                t(i) && l[i.n] !== Ip.Not) return i;
                d || (c === Ip.Might && null == s.v && u !== r && (s.v = u), (null == s.n || s.n === s.v) && (s.n = u));
            }
            return t(i) ? i : t(s) ? s : null;
        }();
        if (s) {
            i.value = s.v;
            var l = null != r ? r : s.n;
            i.itemName = [ l ], i.seriesName = [ l ];
        }
        return i;
    }
    function Lr(t) {
        var e = t.option;
        return e.data ? void 0 : t.ecModel.getComponent("dataset", e.datasetIndex || 0);
    }
    function Or(t, e) {
        return Er(t.data, t.sourceFormat, t.seriesLayoutBy, t.dimensionsDefine, t.startIndex, e);
    }
    function Er(t, e, n, i, r, o) {
        function a(t) {
            var e = w(t);
            return null != t && isFinite(t) && "" !== t ? e ? Ip.Might : Ip.Not : e && "-" !== t ? Ip.Must : void 0;
        }
        var s, l, u;
        if (M(t)) return Ip.Not;
        if (i) {
            var h = i[o];
            b(h) ? (l = h.name, u = h.type) : w(h) && (l = h);
        }
        if (null != u) return "ordinal" === u ? Ip.Must : Ip.Not;
        if (e === yp) if (n === Mp) {
            for (var c = t[o], d = 0; d < (c || []).length && 5 > d; d++) if (null != (s = a(c[r + d]))) return s;
        } else for (d = 0; d < t.length && 5 > d; d++) {
            var f = t[r + d];
            if (f && null != (s = a(f[o]))) return s;
        } else if (e === xp) {
            if (!l) return Ip.Not;
            for (d = 0; d < t.length && 5 > d; d++) {
                if ((p = t[d]) && null != (s = a(p[l]))) return s;
            }
        } else if (e === _p) {
            if (!l) return Ip.Not;
            if (!(c = t[l]) || M(c)) return Ip.Not;
            for (d = 0; d < c.length && 5 > d; d++) if (null != (s = a(c[d]))) return s;
        } else if (e === vp) for (d = 0; d < t.length && 5 > d; d++) {
            var p, g = gn(p = t[d]);
            if (!x(g)) return Ip.Not;
            if (null != (s = a(g[o]))) return s;
        }
        return Ip.Not;
    }
    function Br(e) {
        e = e, this.option = {}, this.option[Cp] = 1, this._componentsMap = z({
            series: []
        }), this._seriesIndices, this._seriesIndicesMap, function(e, n) {
            var o = e.color && !e.colorLayer;
            f(n, function(n, a) {
                "colorLayer" === a && o || dp.hasClass(a) || ("object" == t(n) ? e[a] = e[a] ? r(e[a], n, !1) : i(n) : null == e[a] && (e[a] = n));
            });
        }(e, this._theme.option), r(e, pp, !1), this.mergeOption(e);
    }
    function Nr(t, e) {
        t._seriesIndicesMap = z(t._seriesIndices = p(e, function(t) {
            return t.componentIndex;
        }) || []);
    }
    function zr(t, e) {
        return e.hasOwnProperty("subType") ? m(t, function(t) {
            return t.subType === e.subType;
        }) : t;
    }
    function Rr(t) {
        if (Lu && !t._seriesIndices) throw new Error("Option should contains series.");
    }
    function Fr(t) {
        f(Ap, function(e) {
            this[e] = v(t[e], t);
        }, this);
    }
    function Vr() {
        this._coordinateSystems = [];
    }
    function Hr(t) {
        this._api = t, this._timelineOptions = [], this._mediaList = [], this._mediaDefault, 
        this._currentMediaIndices = [], this._optionBackup, this._newBaseOption;
    }
    function Gr(t, e, n) {
        var i, r, o = [], a = [], s = t.timeline;
        if (t.baseOption && (r = t.baseOption), (s || t.options) && (r = r || {}, o = (t.options || []).slice()), 
        t.media) {
            r = r || {};
            var l = t.media;
            Pp(l, function(t) {
                t && t.option && (t.query ? a.push(t) : i || (i = t));
            });
        }
        return r || (r = t), r.timeline || (r.timeline = s), Pp([ r ].concat(o).concat(p(a, function(t) {
            return t.option;
        })), function(t) {
            Pp(e, function(e) {
                e(t, n);
            });
        }), {
            baseOption: r,
            timelineOptions: o,
            mediaDefault: i,
            mediaList: a
        };
    }
    function Wr(t, e, n) {
        var i = {
            width: e,
            height: n,
            aspectratio: e / n
        }, r = !0;
        return f(t, function(t, e) {
            var n = e.match(Bp);
            if (n && n[1] && n[2]) {
                var o = n[1], a = n[2].toLowerCase();
                (function(t, e, n) {
                    return "min" === n ? t >= e : "max" === n ? e >= t : t === e;
                })(i[a], t, o) || (r = !1);
            }
        }), r;
    }
    function Xr(t) {
        var e = t && t.itemStyle;
        if (e) for (var n = 0, i = Rp.length; i > n; n++) {
            var o = Rp[n], a = e.normal, s = e.emphasis;
            a && a[o] && (t[o] = t[o] || {}, t[o].normal ? r(t[o].normal, a[o]) : t[o].normal = a[o], 
            a[o] = null), s && s[o] && (t[o] = t[o] || {}, t[o].emphasis ? r(t[o].emphasis, s[o]) : t[o].emphasis = s[o], 
            s[o] = null);
        }
    }
    function Ur(t, e, n) {
        if (t && t[e] && (t[e].normal || t[e].emphasis)) {
            var i = t[e].normal, r = t[e].emphasis;
            i && (n ? (t[e].normal = t[e].emphasis = null, s(t[e], i)) : t[e] = i), r && (t.emphasis = t.emphasis || {}, 
            t.emphasis[e] = r);
        }
    }
    function Yr(t) {
        Ur(t, "itemStyle"), Ur(t, "lineStyle"), Ur(t, "areaStyle"), Ur(t, "label"), Ur(t, "labelLine"), 
        Ur(t, "upperLabel"), Ur(t, "edgeLabel");
    }
    function qr(t, e) {
        var n = zp(t) && t[e], i = zp(n) && n.textStyle;
        if (i) for (var r = 0, o = qc.length; o > r; r++) {
            e = qc[r];
            i.hasOwnProperty(e) && (n[e] = i[e]);
        }
    }
    function jr(t) {
        t && (Yr(t), qr(t, "label"), t.emphasis && qr(t.emphasis, "label"));
    }
    function Zr(t) {
        return x(t) ? t : t ? [ t ] : [];
    }
    function Kr(t) {
        return (x(t) ? t[0] : t) || {};
    }
    function $r(t) {
        f(Vp, function(e) {
            e[0] in t && !(e[1] in t) && (t[e[1]] = t[e[0]]);
        });
    }
    function Qr(t) {
        f(t, function(e, n) {
            var i = [], r = [ NaN, NaN ], o = [ e.stackResultDimension, e.stackedOverDimension ], a = e.data, s = e.isStackedByIndex, l = a.map(o, function(o, l, u) {
                var h, c, d = a.get(e.stackedDimension, u);
                if (isNaN(d)) return r;
                s ? c = a.getRawIndex(u) : h = a.get(e.stackedByDimension, u);
                for (var f = NaN, p = n - 1; p >= 0; p--) {
                    var g = t[p];
                    if (s || (c = g.data.rawIndexOf(g.stackedByDimension, h)), c >= 0) {
                        var m = g.data.getByRawIndex(g.stackResultDimension, c);
                        if (d >= 0 && m > 0 || 0 >= d && 0 > m) {
                            d += m, f = m;
                            break;
                        }
                    }
                }
                return i[0] = d, i[1] = f, i;
            });
            a.hostModel.setData(l), e.data = l;
        });
    }
    function Jr(t, e) {
        Tr.isInstance(t) || (t = Tr.seriesDataToSource(t)), this._source = t;
        var n = this._data = t.data, i = t.sourceFormat;
        if (i === bp) {
            if (Lu && null == e) throw new Error("Typed array data must specify dimension size");
            this._offset = 0, this._dimSize = e, this._data = n;
        }
        var r = Xp[i === yp ? i + "_" + t.seriesLayoutBy : i];
        Lu && L(r, "Invalide sourceFormat: " + i), a(this, r);
    }
    function to() {
        return this._data.length;
    }
    function eo(t) {
        return this._data[t];
    }
    function no(t) {
        for (var e = 0; e < t.length; e++) this._data.push(t[e]);
    }
    function io(t, e, n) {
        return null != n ? t[n] : t;
    }
    function ro(t, e, n, i) {
        return oo(t[i], this._dimensionInfos[e]);
    }
    function oo(t, e) {
        var n = e && e.type;
        if ("ordinal" === n) {
            var i = e && e.ordinalMeta;
            return i ? i.parseAndCollect(t) : t;
        }
        return "time" === n && "number" != typeof t && null != t && "-" !== t && (t = +hr(t)), 
        null == t || "" === t ? NaN : +t;
    }
    function ao(t, e, n) {
        if (t) {
            var i = t.getRawDataItem(e);
            if (null != i) {
                var r, o, a = t.getProvider().getSource().sourceFormat, s = t.getDimensionInfo(n);
                return s && (r = s.name, o = s.index), Up[a](i, e, o, r);
            }
        }
    }
    function so(t, e, n) {
        if (t) {
            var i = t.getProvider().getSource().sourceFormat;
            if (i === vp || i === xp) {
                var r = t.getRawDataItem(e);
                return i !== vp || b(r) || (r = null), r ? r[n] : void 0;
            }
        }
    }
    function lo(t) {
        return new uo(t);
    }
    function uo(t) {
        t = t || {}, this._reset = t.reset, this._plan = t.plan, this._count = t.count, 
        this._onDirty = t.onDirty, this._dirty = !0, this.context;
    }
    function ho(t, e, n, i, r, o) {
        Kp.reset(n, i, r, o), t._callingProgress = e, t._callingProgress({
            start: n,
            end: i,
            count: i - n,
            next: Kp.next
        }, t.context);
    }
    function co(t) {
        var e = t.name;
        vn(t) || (t.name = function(t) {
            var e = t.getRawData(), n = e.mapDimension("seriesName", !0), i = [];
            return f(n, function(t) {
                var n = e.getDimensionInfo(t);
                n.displayName && i.push(n.displayName);
            }), i.join(" ");
        }(t) || e);
    }
    function fo(t) {
        return t.model.getRawData().count();
    }
    function po(t) {
        var e = t.model;
        return e.setData(e.getRawData().cloneShallow()), go;
    }
    function go(t, e) {
        e.outputData && t.end > e.outputData.count() && e.model.getRawData().cloneShallow(e.outputData);
    }
    function mo(t, e) {
        f(t.CHANGABLE_METHODS, function(n) {
            t.wrapMethod(n, y(vo, e));
        });
    }
    function vo(t) {
        var e = yo(t);
        e && e.setOutputEnd(this.count());
    }
    function yo(t) {
        var e = (t.ecModel || {}).scheduler, n = e && e.getPipeline(t.uid);
        if (n) {
            var i = n.currentTask;
            if (i) {
                var r = i.agentStubMap;
                r && (i = r.get(t.uid));
            }
            return i;
        }
    }
    function xo() {
        this.group = new jh(), this.uid = tr("viewChart"), this.renderTask = lo({
            plan: bo,
            reset: So
        }), this.renderTask.context = {
            view: this
        };
    }
    function _o(t, e, n) {
        if (t && (t.trigger(e, n), t.isGroup && !Oi(t))) for (var i = 0, r = t.childCount(); r > i; i++) _o(t.childAt(i), e, n);
    }
    function wo(t, e, n) {
        var i = xn(t, e), r = e && null != e.highlightKey ? Ei(e.highlightKey) : null;
        null != i ? f(fn(i), function(e) {
            _o(t.getItemGraphicEl(e), n, r);
        }) : t.eachItemGraphicEl(function(t) {
            _o(t, n, r);
        });
    }
    function bo(t) {
        return ig(t.model);
    }
    function So(t) {
        var e = t.model, n = t.ecModel, i = t.api, r = t.payload, o = e.pipelineContext.progressiveRender, a = t.view, s = r && ng(r).updateMethod, l = o ? "incrementalPrepareRender" : s && a[s] ? s : "render";
        return "render" !== l && a[l](e, n, i, r), og[l];
    }
    function Mo(t, e, n) {
        function i() {
            h = new Date().getTime(), c = null, t.apply(a, s || []);
        }
        var r, o, a, s, l, u = 0, h = 0, c = null;
        e = e || 0;
        var d = function() {
            r = new Date().getTime(), a = this, s = arguments;
            var t = l || e, d = l || n;
            l = null, o = r - (d ? u : h) - t, clearTimeout(c), d ? c = setTimeout(i, t) : o >= 0 ? i() : c = setTimeout(i, -o), 
            u = r;
        };
        return d.clear = function() {
            c && (clearTimeout(c), c = null);
        }, d.debounceNextCall = function(t) {
            l = t;
        }, d;
    }
    function Io(t, e, n, i) {
        this.ecInstance = t, this.api = e, this.unfinished;
        n = this._dataProcessorHandlers = n.slice(), i = this._visualHandlers = i.slice();
        this._allHandlers = n.concat(i), this._stageTaskMap = z();
    }
    function To(t, e, n, i, r) {
        function o(t, e) {
            return t.setDirty && (!t.dirtyMap || t.dirtyMap.get(e.__pipeline.id));
        }
        var a;
        r = r || {}, f(e, function(e) {
            if (!r.visualType || r.visualType === e.visualType) {
                var s = t._stageTaskMap.get(e.uid), l = s.seriesTaskMap, u = s.overallTask;
                if (u) {
                    var h, c = u.agentStubMap;
                    c.each(function(t) {
                        o(r, t) && (t.dirty(), h = !0);
                    }), h && u.dirty(), pg(u, i);
                    var d = t.getPerformArgs(u, r.block);
                    c.each(function(t) {
                        t.perform(d);
                    }), a |= u.perform(d);
                } else l && l.each(function(s) {
                    o(r, s) && s.dirty();
                    var l = t.getPerformArgs(s, r.block);
                    l.skip = !e.performRawSeries && n.isSeriesFiltered(s.context.model), pg(s, i), a |= s.perform(l);
                });
            }
        }), t.unfinished |= a;
    }
    function Co(t) {
        t.overallReset(t.ecModel, t.api, t.payload);
    }
    function Do(t) {
        return t.overallProgress && Ao;
    }
    function Ao() {
        this.agent.dirty(), this.getDownstream().dirty();
    }
    function ko() {
        this.agent && this.agent.dirty();
    }
    function Po(t) {
        return t.plan && t.plan(t.model, t.ecModel, t.api, t.payload);
    }
    function Lo(t) {
        t.useClearVisual && t.data.clearAllVisual();
        var e = t.resetDefines = fn(t.reset(t.model, t.ecModel, t.api, t.payload));
        return e.length > 1 ? p(e, function(t, e) {
            return Oo(e);
        }) : gg;
    }
    function Oo(t) {
        return function(e, n) {
            var i = n.data, r = n.resetDefines[t];
            if (r && r.dataEach) for (var o = e.start; o < e.end; o++) r.dataEach(i, o); else r && r.progress && r.progress(e, i);
        };
    }
    function Eo(t) {
        return t.data.count();
    }
    function Bo(t, e, n) {
        var i = e.uid, r = t._pipelineMap.get(i);
        !r.head && (r.head = n), r.tail && r.tail.pipe(n), r.tail = n, n.__idxInPipeline = r.count++, 
        n.__pipeline = r;
    }
    function No(t) {
        mg = null;
        try {
            t(vg, yg);
        } catch (t) {}
        return mg;
    }
    function zo(t, e) {
        for (var n in e.prototype) t[n] = R;
    }
    function Ro(t) {
        w(t) && (t = new DOMParser().parseFromString(t, "text/xml"));
        for (9 === t.nodeType && (t = t.firstChild); "svg" !== t.nodeName.toLowerCase() || 1 !== t.nodeType; ) t = t.nextSibling;
        return t;
    }
    function Fo() {
        this._defs = {}, this._root = null, this._isDefine = !1, this._isText = !1;
    }
    function Vo(t, e) {
        t && t.__inheritedStyle && (e.__inheritedStyle || (e.__inheritedStyle = {}), s(e.__inheritedStyle, t.__inheritedStyle));
    }
    function Ho(t) {
        for (var e = O(t).split(Tg), n = [], i = 0; i < e.length; i += 2) {
            var r = parseFloat(e[i]), o = parseFloat(e[i + 1]);
            n.push([ r, o ]);
        }
        return n;
    }
    function Go(t, e, n, i) {
        var r = e.__inheritedStyle || {}, o = "text" === e.type;
        if (1 === t.nodeType && (function(t, e) {
            var n = t.getAttribute("transform");
            if (n) {
                n = n.replace(/,/g, " ");
                var i = null, r = [];
                n.replace(Pg, function(t, e, n) {
                    r.push(e, n);
                });
                for (var o = r.length - 1; o > 0; o -= 2) {
                    var a = r[o], s = r[o - 1];
                    switch (i = i || vt(), s) {
                      case "translate":
                        a = O(a).split(Tg), wt(i, i, [ parseFloat(a[0]), parseFloat(a[1] || 0) ]);
                        break;

                      case "scale":
                        a = O(a).split(Tg), St(i, i, [ parseFloat(a[0]), parseFloat(a[1] || a[0]) ]);
                        break;

                      case "rotate":
                        a = O(a).split(Tg), bt(i, i, parseFloat(a[0]));
                        break;

                      case "skew":
                        a = O(a).split(Tg), console.warn("Skew transform is not supported yet");
                        break;

                      case "matrix":
                        a = O(a).split(Tg);
                        i[0] = parseFloat(a[0]), i[1] = parseFloat(a[1]), i[2] = parseFloat(a[2]), i[3] = parseFloat(a[3]), 
                        i[4] = parseFloat(a[4]), i[5] = parseFloat(a[5]);
                    }
                }
                e.setLocalTransform(i);
            }
        }(t, e), a(r, function(t) {
            var e = t.getAttribute("style"), n = {};
            if (!e) return n;
            var i, r = {};
            for (Lg.lastIndex = 0; null != (i = Lg.exec(e)); ) r[i[1]] = i[2];
            for (var o in Ag) Ag.hasOwnProperty(o) && null != r[o] && (n[Ag[o]] = r[o]);
            return n;
        }(t)), !i)) for (var s in Ag) if (Ag.hasOwnProperty(s)) {
            var l = t.getAttribute(s);
            null != l && (r[Ag[s]] = l);
        }
        var u = o ? "textFill" : "fill", h = o ? "textStroke" : "stroke";
        e.style = e.style || new ic();
        var c = e.style;
        null != r.fill && c.set(u, Wo(r.fill, n)), null != r.stroke && c.set(h, Wo(r.stroke, n)), 
        f([ "lineWidth", "opacity", "fillOpacity", "strokeOpacity", "miterLimit", "fontSize" ], function(t) {
            var e = "lineWidth" === t && o ? "textStrokeWidth" : t;
            null != r[t] && c.set(e, parseFloat(r[t]));
        }), r.textBaseline && "auto" !== r.textBaseline || (r.textBaseline = "alphabetic"), 
        "alphabetic" === r.textBaseline && (r.textBaseline = "bottom"), "start" === r.textAlign && (r.textAlign = "left"), 
        "end" === r.textAlign && (r.textAlign = "right"), f([ "lineDashOffset", "lineCap", "lineJoin", "fontWeight", "fontFamily", "fontStyle", "textAlign", "textBaseline" ], function(t) {
            null != r[t] && c.set(t, r[t]);
        }), r.lineDash && (e.style.lineDash = O(r.lineDash).split(Tg)), c[h] && "none" !== c[h] && (e[h] = !0), 
        e.__inheritedStyle = r;
    }
    function Wo(t, e) {
        var n = e && t && t.match(kg);
        return n ? e[O(n[1])] : t;
    }
    function Xo(t, e) {
        return function(n, i, r) {
            return !e && this._disposed ? void oa(this.id) : (n = n && n.toLowerCase(), void ih.prototype[t].call(this, n, i, r));
        };
    }
    function Uo() {
        ih.call(this);
    }
    function Yo(t, e, n) {
        function r(t, e) {
            return t.__prio - e.__prio;
        }
        n = n || {}, "string" == typeof e && (e = om[e]), this.id, this.group, this._dom = t;
        var o = "canvas";
        Lu && (o = ("undefined" == typeof window ? global : window).__ECHARTS__DEFAULT__RENDERER__ || o);
        var a = this._zr = dn(t, {
            renderer: n.renderer || o,
            devicePixelRatio: n.devicePixelRatio,
            width: n.width,
            height: n.height
        });
        this._throttledZrFlush = Mo(v(a.flush, a), 17), (e = i(e)) && Gp(e, !0), this._theme = e, 
        this._chartsViews = [], this._chartsMap = {}, this._componentsViews = [], this._componentsMap = {}, 
        this._coordSysMgr = new Vr();
        var s = this._api = sa(this);
        he(rm, r), he(em, r), this._scheduler = new Io(this, s, em, rm), ih.call(this, this._ecEventProcessor = new la()), 
        this._messageCenter = new Uo(), this._initEvents(), this.resize = v(this.resize, this), 
        this._pendingActions = [], a.animation.on("frame", this._onframe, this), function(t, e) {
            t.on("rendered", function() {
                e.trigger("rendered"), !t.animation.isFinished() || e[jg] || e._scheduler.unfinished || e._pendingActions.length || e.trigger("finished");
            });
        }(a, this), E(this);
    }
    function qo(t, e, n) {
        if (this._disposed) oa(this.id); else {
            var i, r = this._model, o = this._coordSysMgr.getCoordinateSystems();
            e = wn(r, e);
            for (var a = 0; a < o.length; a++) {
                var s = o[a];
                if (s[t] && null != (i = s[t](r, e, n))) return i;
            }
            Lu && console.warn("No coordinate system that supports " + t + " found by the given finder.");
        }
    }
    function jo(t) {
        var e = t._model, n = t._scheduler;
        n.restorePipelines(e), n.prepareStageTasks(), ta(t, "component", e, n), ta(t, "chart", e, n), 
        n.plan();
    }
    function Zo(t, e, n, i, r) {
        function o(i) {
            i && i.__alive && i[e] && i[e](i.__model, a, t._api, n);
        }
        var a = t._model;
        if (i) {
            var s = {};
            s[i + "Id"] = n[i + "Id"], s[i + "Index"] = n[i + "Index"], s[i + "Name"] = n[i + "Name"];
            var l = {
                mainType: i,
                query: s
            };
            r && (l.subType = r);
            var u = n.excludeSeriesId;
            null != u && (u = z(fn(u))), a && a.eachComponent(l, function(e) {
                u && null != u.get(e.id) || o(t["series" === i ? "_chartsMap" : "_componentsMap"][e.__viewId]);
            }, t);
        } else zg(t._componentsViews.concat(t._chartsViews), o);
    }
    function Ko(t, e) {
        var n = t._chartsMap, i = t._scheduler;
        e.eachSeries(function(t) {
            i.updateStreamModes(t, n[t.__viewId]);
        });
    }
    function $o(t, e) {
        var n = t.type, i = t.escapeConnect, r = Jg[n], o = r.actionInfo, l = (o.update || "update").split(":"), u = l.pop();
        l = null != l[0] && Vg(l[0]), this[qg] = !0;
        var h = [ t ], c = !1;
        t.batch && (c = !0, h = p(t.batch, function(e) {
            return (e = s(a({}, e), t)).batch = null, e;
        }));
        var d, f = [], g = "highlight" === n || "downplay" === n;
        zg(h, function(t) {
            (d = (d = r.action(t, this._model, this._api)) || a({}, t)).type = o.event || d.type, 
            f.push(d), g ? Zo(this, u, t, "series") : l && Zo(this, u, t, l.main, l.sub);
        }, this), "none" === u || g || l || (this[jg] ? (jo(this), $g.update.call(this, t), 
        this[jg] = !1) : $g[u].call(this, t)), d = c ? {
            type: o.event || n,
            escapeConnect: i,
            batch: f
        } : f[0], this[qg] = !1, !e && this._messageCenter.trigger(d.type, d);
    }
    function Qo(t) {
        for (var e = this._pendingActions; e.length; ) {
            var n = e.shift();
            $o.call(this, n, t);
        }
    }
    function Jo(t) {
        !t && this.trigger("updated");
    }
    function ta(t, e, n, i) {
        function r(t) {
            var e = "_ec_" + t.id + "_" + t.type, r = s[e];
            if (!r) {
                var h = Vg(t.type), c = o ? Jp.getClass(h.main, h.sub) : xo.getClass(h.sub);
                Lu && Ng(c, h.sub + " does not exist."), (r = new c()).init(n, u), s[e] = r, a.push(r), 
                l.add(r.group);
            }
            t.__viewId = r.__id = e, r.__alive = !0, r.__model = t, r.group.__ecComponentInfo = {
                mainType: t.mainType,
                index: t.componentIndex
            }, !o && i.prepareView(r, t, n, u);
        }
        for (var o = "component" === e, a = o ? t._componentsViews : t._chartsViews, s = o ? t._componentsMap : t._chartsMap, l = t._zr, u = t._api, h = 0; h < a.length; h++) a[h].__alive = !1;
        o ? n.eachComponent(function(t, e) {
            "series" !== t && r(e);
        }) : n.eachSeries(r);
        for (h = 0; h < a.length; ) {
            var c = a[h];
            c.__alive ? h++ : (!o && c.renderTask.dispose(), l.remove(c.group), c.dispose(n, u), 
            a.splice(h, 1), delete s[c.__id], c.__id = c.group.__ecComponentInfo = null);
        }
    }
    function ea(t) {
        t.clearColorPalette(), t.eachSeries(function(t) {
            t.clearColorPalette();
        });
    }
    function na(t, e, n, i) {
        (function(t, e, n, i, r) {
            zg(r || t._componentsViews, function(t) {
                var r = t.__model;
                t.render(r, e, n, i), aa(r, t);
            });
        })(t, e, n, i), zg(t._chartsViews, function(t) {
            t.__alive = !1;
        }), ia(t, e, n, i), zg(t._chartsViews, function(t) {
            t.__alive || t.remove(e, n);
        });
    }
    function ia(t, e, n, i, r) {
        var o, a = t._scheduler;
        e.eachSeries(function(e) {
            var n = t._chartsMap[e.__viewId];
            n.__alive = !0;
            var s = n.renderTask;
            a.updatePayload(s, i), r && r.get(e.uid) && s.dirty(), o |= s.perform(a.getPerformArgs(s)), 
            n.group.silent = !!e.get("silent"), aa(e, n), function(t, e) {
                var n = t.get("blendMode") || null;
                Lu && !Bu.canvasSupported && n && "source-over" !== n && console.warn("Only canvas support blendMode"), 
                e.group.traverse(function(t) {
                    t.isGroup || t.style.blend !== n && t.setStyle("blend", n), t.eachPendingDisplayable && t.eachPendingDisplayable(function(t) {
                        t.setStyle("blend", n);
                    });
                });
            }(e, n);
        }), a.unfinished |= o, function(t, e) {
            var n = t._zr.storage, i = 0;
            n.traverse(function() {
                i++;
            }), i > e.get("hoverLayerThreshold") && !Bu.node && e.eachSeries(function(e) {
                if (!e.preventUsingHoverLayer) {
                    var n = t._chartsMap[e.__viewId];
                    n.__alive && n.group.traverse(function(t) {
                        t.useHoverLayer = !0;
                    });
                }
            });
        }(t, e), cg(t._zr.dom, e);
    }
    function ra(t, e) {
        zg(im, function(n) {
            n(t, e);
        });
    }
    function oa(t) {
        Lu && console.warn("Instance " + t + " has been disposed");
    }
    function aa(t, e) {
        var n = t.get("z"), i = t.get("zlevel");
        e.group.traverse(function(t) {
            "group" !== t.type && (null != n && (t.z = n), null != i && (t.zlevel = i));
        });
    }
    function sa(t) {
        var e = t._coordSysMgr;
        return a(new Fr(t), {
            getCoordinateSystems: v(e.getCoordinateSystems, e),
            getComponentByElement: function(e) {
                for (;e; ) {
                    var n = e.__ecComponentInfo;
                    if (null != n) return t._model.getComponent(n.mainType, n.index);
                    e = e.parent;
                }
            }
        });
    }
    function la() {
        this.eventInfo;
    }
    function ua(t) {
        lm[t] = !1;
    }
    function ha(t) {
        return sm[function(t, e) {
            return t.getAttribute ? t.getAttribute(e) : t[e];
        }(t, cm)];
    }
    function ca(t, e) {
        om[t] = e;
    }
    function da(t) {
        nm.push(t);
    }
    function fa(t, e) {
        va(em, t, e, Wg);
    }
    function pa(t, e, n) {
        "function" == typeof e && (n = e, e = "");
        var i = Fg(t) ? t.type : [ t, t = {
            event: e
        } ][0];
        t.event = (t.event || i).toLowerCase(), e = t.event, Ng(Zg.test(i) && Zg.test(e)), 
        Jg[i] || (Jg[i] = {
            action: n,
            actionInfo: t
        }), tm[e] = i;
    }
    function ga(t, e) {
        va(rm, t, e, Xg, "layout");
    }
    function ma(t, e) {
        va(rm, t, e, Ug, "visual");
    }
    function va(t, e, n, i, r) {
        if ((Rg(e) || Fg(e)) && (n = e, e = i), Lu) {
            if (isNaN(e) || null == e) throw new Error("Illegal priority");
            zg(t, function(t) {
                Ng(t.__raw !== n);
            });
        }
        var o = Io.wrapStageHandler(n, r);
        return o.__prio = e, o.__raw = n, t.push(o), o;
    }
    function ya(t, e) {
        am[t] = e;
    }
    function xa(t) {
        return dp.extend(t);
    }
    function _a(t) {
        return Jp.extend(t);
    }
    function wa(t) {
        return Qp.extend(t);
    }
    function ba(t) {
        return xo.extend(t);
    }
    function Sa(t) {
        return t;
    }
    function Ma(t, e, n, i, r) {
        this._old = t, this._new = e, this._oldKeyGetter = n || Sa, this._newKeyGetter = i || Sa, 
        this.context = r;
    }
    function Ia(t, e, n, i, r) {
        for (var o = 0; o < t.length; o++) {
            var a = "_ec_" + r[i](t[o], o), s = e[a];
            null == s ? (n.push(a), e[a] = o) : (s.length || (e[a] = s = [ s ]), s.push(o));
        }
    }
    function Ta(t, e) {
        return t.hasOwnProperty(e) || (t[e] = []), t[e];
    }
    function Ca(t) {
        null != t && a(this, t), this.otherDims = {};
    }
    function Da(t) {
        return t._rawCount > 65535 ? xm : wm;
    }
    function Aa(t) {
        var e = t.constructor;
        return e === Array ? t.slice() : new e(t);
    }
    function ka(t, e) {
        f(bm.concat(e.__wrappedMethods || []), function(n) {
            e.hasOwnProperty(n) && (t[n] = e[n]);
        }), t.__wrappedMethods = e.__wrappedMethods, f(Sm, function(n) {
            t[n] = i(e[n]);
        }), t._calculationInfo = a(e._calculationInfo);
    }
    function Pa(t, e, n, i, r) {
        var o = ym[e.type], a = i - 1, s = e.name, l = t[s][a];
        if (l && l.length < n) {
            for (var u = new o(Math.min(r - a * n, n)), h = 0; h < l.length; h++) u[h] = l[h];
            t[s][a] = u;
        }
        for (var c = i * n; r > c; c += n) t[s].push(new o(Math.min(r - c, n)));
    }
    function La(t) {
        var e = t._invertedIndicesMap;
        f(e, function(n, i) {
            var r = t._dimensionInfos[i].ordinalMeta;
            if (r) {
                n = e[i] = new _m(r.categories.length);
                for (var o = 0; o < n.length; o++) n[o] = mm;
                for (o = 0; o < t._count; o++) n[t.get(i, o)] = o;
            }
        });
    }
    function Oa(t, e, n) {
        var i;
        if (null != e) {
            var r = t._chunkSize, o = Math.floor(n / r), a = n % r, s = t.dimensions[e], l = t._storage[s][o];
            if (l) {
                i = l[a];
                var u = t._dimensionInfos[s].ordinalMeta;
                u && u.categories.length && (i = u.categories[i]);
            }
        }
        return i;
    }
    function Ea(t) {
        return t;
    }
    function Ba(t) {
        return t < this._count && t >= 0 ? this._indices[t] : -1;
    }
    function Na(t, e) {
        var n = t._idList[e];
        return null == n && (n = Oa(t, t._idDimIdx, e)), null == n && (n = vm + e), n;
    }
    function za(t) {
        return x(t) || (t = [ t ]), t;
    }
    function Ra(t, e) {
        for (var n = 0; n < e.length; n++) t._dimensionInfos[e[n]] || console.error("Unkown dimension " + e[n]);
    }
    function Fa(t, e) {
        var n = t.dimensions, i = new Mm(p(n, t.getDimensionInfo, t), t.hostModel);
        ka(i, t);
        for (var r = i._storage = {}, o = t._storage, a = 0; a < n.length; a++) {
            var s = n[a];
            o[s] && (u(e, s) >= 0 ? (r[s] = Va(o[s]), i._rawExtent[s] = [ 1 / 0, -1 / 0 ], i._extent[s] = null) : r[s] = o[s]);
        }
        return i;
    }
    function Va(t) {
        for (var e = new Array(t.length), n = 0; n < t.length; n++) e[n] = Aa(t[n]);
        return e;
    }
    function Ha(t, e, n) {
        function r(t, e, n) {
            null != fm.get(e) ? t.otherDims[e] = n : (t.coordDim = e, t.coordDimIndex = n, u.set(e, !0));
        }
        Tr.isInstance(e) || (e = Tr.seriesDataToSource(e)), n = n || {}, t = (t || []).slice();
        for (var o = (n.dimsDef || []).slice(), l = z(), u = z(), h = [], c = function(t, e, n, i) {
            var r = Math.max(t.dimensionsDetectCount || 1, e.length, n.length, i || 0);
            return f(e, function(t) {
                var e = t.dimsDef;
                e && (r = Math.max(r, e.length));
            }), r;
        }(e, t, o, n.dimCount), d = 0; c > d; d++) {
            var p = o[d] = a({}, b(o[d]) ? o[d] : {
                name: o[d]
            }), g = p.name, m = h[d] = new Ca();
            null != g && null == l.get(g) && (m.name = m.displayName = g, l.set(g, d)), null != p.type && (m.type = p.type), 
            null != p.displayName && (m.displayName = p.displayName);
        }
        var v = n.encodeDef;
        !v && n.encodeDefaulter && (v = n.encodeDefaulter(e, c)), (v = z(v)).each(function(t, e) {
            if (1 === (t = fn(t).slice()).length && !w(t[0]) && t[0] < 0) v.set(e, !1); else {
                var n = v.set(e, []);
                f(t, function(t, i) {
                    w(t) && (t = l.get(t)), null != t && c > t && (n[i] = t, r(h[t], e, i));
                });
            }
        });
        var y = 0;
        f(t, function(t) {
            var e, n, o;
            if (w(t)) e = t, t = {}; else {
                e = t.name;
                var a = t.ordinalMeta;
                t.ordinalMeta = null, (t = i(t)).ordinalMeta = a, n = t.dimsDef, o = t.otherDims, 
                t.name = t.coordDim = t.coordDimIndex = t.dimsDef = t.otherDims = null;
            }
            if (!1 !== (l = v.get(e))) {
                var l;
                if (!(l = fn(l)).length) for (var u = 0; u < (n && n.length || 1); u++) {
                    for (;y < h.length && null != h[y].coordDim; ) y++;
                    y < h.length && l.push(y++);
                }
                f(l, function(i, a) {
                    var l = h[i];
                    if (r(s(l, t), e, a), null == l.name && n) {
                        var u = n[a];
                        !b(u) && (u = {
                            name: u
                        }), l.name = l.displayName = u.name, l.defaultTooltip = u.defaultTooltip;
                    }
                    o && s(l.otherDims, o);
                });
            }
        });
        var x = n.generateCoord, _ = n.generateCoordCount, S = null != _;
        _ = x ? _ || 1 : 0;
        for (var M = x || "value", I = 0; c > I; I++) {
            null == (m = h[I] = h[I] || new Ca()).coordDim && (m.coordDim = Ga(M, u, S), m.coordDimIndex = 0, 
            (!x || 0 >= _) && (m.isExtraCoord = !0), _--), null == m.name && (m.name = Ga(m.coordDim, l)), 
            null != m.type || Or(e, I, m.name) !== Ip.Must && (!m.isExtraCoord || null == m.otherDims.itemName && null == m.otherDims.seriesName) || (m.type = "ordinal");
        }
        return h;
    }
    function Ga(t, e, n) {
        if (n || null != e.get(t)) {
            for (var i = 0; null != e.get(t + i); ) i++;
            t += i;
        }
        return e.set(t, !0), t;
    }
    function Wa(t) {
        this.coordSysName = t, this.coordSysDims = [], this.axisMap = z(), this.categoryAxisMap = z(), 
        this.firstCategoryDimIndex = null;
    }
    function Xa(t) {
        return "category" === t.get("type");
    }
    function Ua(t, e, n) {
        var i, r, o, a, s = (n = n || {}).byIndex, l = n.stackedCoordDimension, u = !(!t || !t.get("stack"));
        if (f(e, function(t, n) {
            w(t) && (e[n] = t = {
                name: t
            }), u && !t.isExtraCoord && (s || i || !t.ordinalMeta || (i = t), r || "ordinal" === t.type || "time" === t.type || l && l !== t.coordDim || (r = t));
        }), !r || s || i || (s = !0), r) {
            o = "__\0ecstackresult", a = "__\0ecstackedover", i && (i.createInvertedIndices = !0);
            var h = r.coordDim, c = r.type, d = 0;
            f(e, function(t) {
                t.coordDim === h && d++;
            }), e.push({
                name: o,
                coordDim: h,
                coordDimIndex: d,
                type: c,
                isExtraCoord: !0,
                isCalculationCoord: !0
            }), d++, e.push({
                name: a,
                coordDim: a,
                coordDimIndex: d,
                type: c,
                isExtraCoord: !0,
                isCalculationCoord: !0
            });
        }
        return {
            stackedDimension: r && r.name,
            stackedByDimension: i && i.name,
            isStackedByIndex: s,
            stackedOverDimension: a,
            stackResultDimension: o
        };
    }
    function Ya(t, e) {
        return !!e && e === t.getCalculationInfo("stackedDimension");
    }
    function qa(t, e) {
        return Ya(t, e) ? t.getCalculationInfo("stackResultDimension") : e;
    }
    function ja(t, e, n) {
        n = n || {}, Tr.isInstance(t) || (t = Tr.seriesDataToSource(t));
        var i, r = e.get("coordinateSystem"), o = Vr.get(r), a = function(t) {
            var e = t.get("coordinateSystem"), n = new Wa(e), i = Dm[e];
            return i ? (i(t, n, n.axisMap, n.categoryAxisMap), n) : void 0;
        }(e);
        a && (i = p(a.coordSysDims, function(t) {
            var e = {
                name: t
            }, n = a.axisMap.get(t);
            if (n) {
                var i = n.get("type");
                e.type = function(t) {
                    return "category" === t ? "ordinal" : "time" === t ? "time" : "float";
                }(i);
            }
            return e;
        })), i || (i = o && (o.getDimensionsInfo ? o.getDimensionsInfo() : o.dimensions.slice()) || [ "x", "y" ]);
        var s, l, u = Cm(t, {
            coordDimensions: i,
            generateCoord: n.generateCoord,
            encodeDefaulter: n.useEncodeDefaulter ? y(kr, i, e) : null
        });
        a && f(u, function(t, e) {
            var n = t.coordDim, i = a.categoryAxisMap.get(n);
            i && (null == s && (s = e), t.ordinalMeta = i.getOrdinalMeta()), null != t.otherDims.itemName && (l = !0);
        }), l || null == s || (u[s].otherDims.itemName = 0);
        var h = Ua(e, u), c = new Mm(u, e);
        c.setCalculationInfo(h);
        var d = null != s && function(t) {
            if (t.sourceFormat === vp) {
                var e = function(t) {
                    for (var e = 0; e < t.length && null == t[e]; ) e++;
                    return t[e];
                }(t.data || []);
                return null != e && !x(gn(e));
            }
        }(t) ? function(t, e, n, i) {
            return i === s ? n : this.defaultDimValueGetter(t, e, n, i);
        } : null;
        return c.hasItemOption = !1, c.initData(t, null, d), c;
    }
    function Za(t) {
        this._setting = t || {}, this._extent = [ 1 / 0, -1 / 0 ], this._interval = 0, this.init && this.init.apply(this, arguments);
    }
    function Ka(t) {
        this.categories = t.categories || [], this._needCollect = t.needCollect, this._deduplication = t.deduplication, 
        this._map;
    }
    function $a(t) {
        return t._map || (t._map = z(t.categories));
    }
    function Qa(t) {
        return b(t) && null != t.value ? t.value : t + "";
    }
    function Ja(t) {
        return or(t) + 2;
    }
    function ts(t, e, n) {
        t[e] = Math.max(Math.min(t[e], n[1]), n[0]);
    }
    function es(t, e) {
        !isFinite(t[0]) && (t[0] = e[0]), !isFinite(t[1]) && (t[1] = e[1]), ts(t, 0, e), 
        ts(t, 1, e), t[0] > t[1] && (t[0] = t[1]);
    }
    function ns(t) {
        return t.get("stack") || Bm + t.seriesIndex;
    }
    function is(t) {
        return t.dim + t.index;
    }
    function rs(t, e) {
        var n = [];
        return e.eachSeriesByType(t, function(t) {
            ss(t) && !ls(t) && n.push(t);
        }), n;
    }
    function os(t) {
        var e = function(t) {
            var e = {};
            f(t, function(t) {
                var n = t.coordinateSystem.getBaseAxis();
                if ("time" === n.type || "value" === n.type) for (var i = t.getData(), r = n.dim + "_" + n.index, o = i.mapDimension(n.dim), a = 0, s = i.count(); s > a; ++a) {
                    var l = i.get(o, a);
                    e[r] ? e[r].push(l) : e[r] = [ l ];
                }
            });
            var n = [];
            for (var i in e) if (e.hasOwnProperty(i)) {
                var r = e[i];
                if (r) {
                    r.sort(function(t, e) {
                        return t - e;
                    });
                    for (var o = null, a = 1; a < r.length; ++a) {
                        var s = r[a] - r[a - 1];
                        s > 0 && (o = null === o ? s : Math.min(o, s));
                    }
                    n[i] = o;
                }
            }
            return n;
        }(t), n = [];
        return f(t, function(t) {
            var i, r = t.coordinateSystem.getBaseAxis(), o = r.getExtent();
            if ("category" === r.type) i = r.getBandWidth(); else if ("value" === r.type || "time" === r.type) {
                var a = r.dim + "_" + r.index, s = e[a], l = Math.abs(o[1] - o[0]), u = r.scale.getExtent(), h = Math.abs(u[1] - u[0]);
                i = s ? l / h * s : l;
            } else {
                var c = t.getData();
                i = Math.abs(o[1] - o[0]) / c.count();
            }
            var d = nr(t.get("barWidth"), i), f = nr(t.get("barMaxWidth"), i), p = nr(t.get("barMinWidth") || 1, i), g = t.get("barGap"), m = t.get("barCategoryGap");
            n.push({
                bandWidth: i,
                barWidth: d,
                barMaxWidth: f,
                barMinWidth: p,
                barGap: g,
                barCategoryGap: m,
                axisKey: is(r),
                stackId: ns(t)
            });
        }), function(t) {
            var e = {};
            f(t, function(t) {
                var n = t.axisKey, i = t.bandWidth, r = e[n] || {
                    bandWidth: i,
                    remainedWidth: i,
                    autoWidthCount: 0,
                    categoryGap: "20%",
                    gap: "30%",
                    stacks: {}
                }, o = r.stacks;
                e[n] = r;
                var a = t.stackId;
                o[a] || r.autoWidthCount++, o[a] = o[a] || {
                    width: 0,
                    maxWidth: 0
                };
                var s = t.barWidth;
                s && !o[a].width && (o[a].width = s, s = Math.min(r.remainedWidth, s), r.remainedWidth -= s);
                var l = t.barMaxWidth;
                l && (o[a].maxWidth = l);
                var u = t.barMinWidth;
                u && (o[a].minWidth = u);
                var h = t.barGap;
                null != h && (r.gap = h);
                var c = t.barCategoryGap;
                null != c && (r.categoryGap = c);
            });
            var n = {};
            return f(e, function(t, e) {
                n[e] = {};
                var i = t.stacks, r = t.bandWidth, o = nr(t.categoryGap, r), a = nr(t.gap, 1), s = t.remainedWidth, l = t.autoWidthCount, u = (s - o) / (l + (l - 1) * a);
                u = Math.max(u, 0), f(i, function(t) {
                    var e = t.maxWidth, n = t.minWidth;
                    if (t.width) {
                        var i = t.width;
                        e && (i = Math.min(i, e)), n && (i = Math.max(i, n)), t.width = i, s -= i + a * i, 
                        l--;
                    } else {
                        i = u;
                        e && i > e && (i = Math.min(e, s)), n && n > i && (i = n), i !== u && (t.width = i, 
                        s -= i + a * i, l--);
                    }
                }), u = (s - o) / (l + (l - 1) * a), u = Math.max(u, 0);
                var h, c = 0;
                f(i, function(t) {
                    t.width || (t.width = u), h = t, c += t.width * (1 + a);
                }), h && (c -= h.width * a);
                var d = -c / 2;
                f(i, function(t, i) {
                    n[e][i] = n[e][i] || {
                        bandWidth: r,
                        offset: d,
                        width: t.width
                    }, d += t.width * (1 + a);
                });
            }), n;
        }(n);
    }
    function as(t, e, n) {
        if (t && e) {
            var i = t[is(e)];
            return null != i && null != n && (i = i[ns(n)]), i;
        }
    }
    function ss(t) {
        return t.coordinateSystem && "cartesian2d" === t.coordinateSystem.type;
    }
    function ls(t) {
        return t.pipelineContext && t.pipelineContext.large;
    }
    function us(t, e) {
        return e.toGlobalCoord(e.dataToCoord("log" === e.type ? 1 : 0));
    }
    function hs(t, e) {
        return Km(t, Zm(e));
    }
    function cs(t, e) {
        var n, i, r, o = t.type, a = e.getMin(), s = e.getMax(), l = t.getExtent();
        "ordinal" === o ? n = e.getCategories().length : (x(i = e.get("boundaryGap")) || (i = [ i || 0, i || 0 ]), 
        "boolean" == typeof i[0] && (Lu && console.warn('Boolean type for boundaryGap is only allowed for ordinal axis. Please use string in percentage instead, e.g., "20%". Currently, boundaryGap is set to be 0.'), 
        i = [ 0, 0 ]), i[0] = nr(i[0], 1), i[1] = nr(i[1], 1), r = l[1] - l[0] || Math.abs(l[0])), 
        "dataMin" === a ? a = l[0] : "function" == typeof a && (a = a({
            min: l[0],
            max: l[1]
        })), "dataMax" === s ? s = l[1] : "function" == typeof s && (s = s({
            min: l[0],
            max: l[1]
        }));
        var u = null != a, h = null != s;
        null == a && (a = "ordinal" === o ? n ? 0 : NaN : l[0] - i[0] * r), null == s && (s = "ordinal" === o ? n ? n - 1 : NaN : l[1] + i[1] * r), 
        (null == a || !isFinite(a)) && (a = NaN), (null == s || !isFinite(s)) && (s = NaN), 
        t.setBlank(T(a) || T(s) || "ordinal" === o && !t.getOrdinalMeta().categories.length), 
        e.getNeedCrossZero() && (a > 0 && s > 0 && !u && (a = 0), 0 > a && 0 > s && !h && (s = 0));
        var c = e.ecModel;
        if (c && "time" === o) {
            var d, p = rs("bar", c);
            if (f(p, function(t) {
                d |= t.getBaseAxis() === e.axis;
            }), d) {
                var g = os(p), m = function(t, e, n, i) {
                    var r = n.axis.getExtent(), o = r[1] - r[0], a = as(i, n.axis);
                    if (void 0 === a) return {
                        min: t,
                        max: e
                    };
                    var s = 1 / 0;
                    f(a, function(t) {
                        s = Math.min(t.offset, s);
                    });
                    var l = -1 / 0;
                    f(a, function(t) {
                        l = Math.max(t.offset + t.width, l);
                    }), s = Math.abs(s), l = Math.abs(l);
                    var u = s + l, h = e - t, c = h / (1 - (s + l) / o) - h;
                    return {
                        min: t -= c * (s / u),
                        max: e += c * (l / u)
                    };
                }(a, s, e, g);
                a = m.min, s = m.max;
            }
        }
        return {
            extent: [ a, s ],
            fixMin: u,
            fixMax: h
        };
    }
    function ds(t, e) {
        var n = cs(t, e), i = n.extent, r = e.get("splitNumber");
        "log" === t.type && (t.base = e.get("logBase"));
        var o = t.type;
        t.setExtent(i[0], i[1]), t.niceExtent({
            splitNumber: r,
            fixMin: n.fixMin,
            fixMax: n.fixMax,
            minInterval: "interval" === o || "time" === o ? e.get("minInterval") : null,
            maxInterval: "interval" === o || "time" === o ? e.get("maxInterval") : null
        });
        var a = e.get("interval");
        null != a && t.setInterval && t.setInterval(a);
    }
    function fs(t, e) {
        if (e = e || t.get("type")) switch (e) {
          case "category":
            return new Pm(t.getOrdinalMeta ? t.getOrdinalMeta() : t.getCategories(), [ 1 / 0, -1 / 0 ]);

          case "value":
            return new Em();

          default:
            return (Za.getClass(e) || Em).create(t);
        }
    }
    function ps(t) {
        var e = t.getLabelModel().get("formatter"), n = "category" === t.type ? t.scale.getExtent()[0] : null;
        return "string" == typeof e ? e = function(e) {
            return function(n) {
                return n = t.scale.getLabel(n), e.replace("{value}", null != n ? n : "");
            };
        }(e) : "function" == typeof e ? function(i, r) {
            return null != n && (r = i - n), e(gs(t, i), r);
        } : function(e) {
            return t.scale.getLabel(e);
        };
    }
    function gs(t, e) {
        return "category" === t.type ? t.scale.getLabel(e) : e;
    }
    function ms(t, e) {
        var n = e * Math.PI / 180, i = t.plain(), r = i.width, o = i.height, a = r * Math.abs(Math.cos(n)) + Math.abs(o * Math.sin(n)), s = r * Math.abs(Math.sin(n)) + Math.abs(o * Math.cos(n));
        return new re(i.x, i.y, a, s);
    }
    function vs(t) {
        var e = t.get("interval");
        return null == e ? "auto" : e;
    }
    function ys(t) {
        return "category" === t.type && 0 === vs(t.getLabelModel());
    }
    function xs(t, e) {
        if ("image" !== this.type) {
            var n = this.style, i = this.shape;
            i && "line" === i.symbolType ? n.stroke = t : this.__isEmptyBrush ? (n.stroke = t, 
            n.fill = e || "#fff") : (n.fill && (n.fill = t), n.stroke && (n.stroke = t)), this.dirty(!1);
        }
    }
    function _s(t, e, n, i, r, o, a) {
        var s, l = 0 === t.indexOf("empty");
        return l && (t = t.substr(5, 1).toLowerCase() + t.substr(6)), (s = 0 === t.indexOf("image://") ? vi(t.slice(8), new re(e, n, i, r), a ? "center" : "cover") : 0 === t.indexOf("path://") ? mi(t.slice(7), {}, new re(e, n, i, r), a ? "center" : "cover") : new uv({
            shape: {
                symbolType: t,
                x: e,
                y: n,
                width: i,
                height: r
            }
        })).__isEmptyBrush = l, s.setColor = xs, s.setColor(o), s;
    }
    function ws(t, e) {
        return Math.abs(t - e) < dv;
    }
    function bs(t, e, n) {
        var i = 0, r = t[0];
        if (!r) return !1;
        for (var o = 1; o < t.length; o++) {
            var a = t[o];
            i += $n(r[0], r[1], a[0], a[1], e, n), r = a;
        }
        var s = t[0];
        return ws(r[0], s[0]) && ws(r[1], s[1]) || (i += $n(r[0], r[1], s[0], s[1], e, n)), 
        0 !== i;
    }
    function Ss(t, e, n) {
        if (this.name = t, this.geometries = e, n) n = [ n[0], n[1] ]; else {
            var i = this.getBoundingRect();
            n = [ i.x + i.width / 2, i.y + i.height / 2 ];
        }
        this.center = n;
    }
    function Ms(t, e, n) {
        for (var i = [], r = e[0], o = e[1], a = 0; a < t.length; a += 2) {
            var s = t.charCodeAt(a) - 64, l = t.charCodeAt(a + 1) - 64;
            s = s >> 1 ^ -(1 & s), l = l >> 1 ^ -(1 & l), r = s += r, o = l += o, i.push([ s / n, l / n ]);
        }
        return i;
    }
    function Is(t) {
        return "category" === t.type ? function(t) {
            var e = t.getLabelModel(), n = Cs(t, e);
            return !e.get("show") || t.scale.isBlank() ? {
                labels: [],
                labelCategoryInterval: n.labelCategoryInterval
            } : n;
        }(t) : function(t) {
            var e = t.scale.getTicks(), n = ps(t);
            return {
                labels: p(e, function(e, i) {
                    return {
                        formattedLabel: n(e, i),
                        rawLabel: t.scale.getLabel(e),
                        tickValue: e
                    };
                })
            };
        }(t);
    }
    function Ts(t, e) {
        return "category" === t.type ? function(t, e) {
            var n, i, r = Ds(t, "ticks"), o = vs(e), a = As(r, o);
            if (a) return a;
            if ((!e.get("show") || t.scale.isBlank()) && (n = []), _(o)) n = Ls(t, o, !0); else if ("auto" === o) {
                var s = Cs(t, t.getLabelModel());
                i = s.labelCategoryInterval, n = p(s.labels, function(t) {
                    return t.tickValue;
                });
            } else n = Ps(t, i = o, !0);
            return ks(r, o, {
                ticks: n,
                tickCategoryInterval: i
            });
        }(t, e) : {
            ticks: t.scale.getTicks()
        };
    }
    function Cs(t, e) {
        var n, i, r = Ds(t, "labels"), o = vs(e), a = As(r, o);
        return a || (_(o) ? n = Ls(t, o) : (i = "auto" === o ? function(t) {
            var e = pv(t).autoInterval;
            return null != e ? e : pv(t).autoInterval = t.calculateCategoryInterval();
        }(t) : o, n = Ps(t, i)), ks(r, o, {
            labels: n,
            labelCategoryInterval: i
        }));
    }
    function Ds(t, e) {
        return pv(t)[e] || (pv(t)[e] = []);
    }
    function As(t, e) {
        for (var n = 0; n < t.length; n++) if (t[n].key === e) return t[n].value;
    }
    function ks(t, e, n) {
        return t.push({
            key: e,
            value: n
        }), n;
    }
    function Ps(t, e, n) {
        function i(t) {
            l.push(n ? t : {
                formattedLabel: r(t),
                rawLabel: o.getLabel(t),
                tickValue: t
            });
        }
        var r = ps(t), o = t.scale, a = o.getExtent(), s = t.getLabelModel(), l = [], u = Math.max((e || 0) + 1, 1), h = a[0], c = o.count();
        0 !== h && u > 1 && c / u > 2 && (h = Math.round(Math.ceil(h / u) * u));
        var d = ys(t), f = s.get("showMinLabel") || d, p = s.get("showMaxLabel") || d;
        f && h !== a[0] && i(a[0]);
        for (var g = h; g <= a[1]; g += u) i(g);
        return p && g - u !== a[1] && i(a[1]), l;
    }
    function Ls(t, e, n) {
        var i = t.scale, r = ps(t), o = [];
        return f(i.getTicks(), function(t) {
            var a = i.getLabel(t);
            e(t, a) && o.push(n ? t : {
                formattedLabel: r(t),
                rawLabel: a,
                tickValue: t
            });
        }), o;
    }
    function Os(t, e) {
        var n = (t[1] - t[0]) / e / 2;
        t[0] += n, t[1] -= n;
    }
    function Es(t) {
        return this._axes[t];
    }
    function Bs(t) {
        _v.call(this, t);
    }
    function Ns(t, e) {
        return e.type || (e.data ? "category" : "value");
    }
    function zs(t, e) {
        return t.getCoordSysModel() === e;
    }
    function Rs(t, e, n) {
        this._coordsMap = {}, this._coordsList = [], this._axesMap = {}, this._axesList = [], 
        this._initCartesian(t, e, n), this.model = t;
    }
    function Fs(t, e, n, i) {
        function r(t) {
            return t.dim + "_" + t.index;
        }
        n.getAxesOnZeroOf = function() {
            return o ? [ o ] : [];
        };
        var o, a = t[e], s = n.model, l = s.get("axisLine.onZero"), u = s.get("axisLine.onZeroAxisIndex");
        if (l) {
            if (null != u) Vs(a[u]) && (o = a[u]); else for (var h in a) if (a.hasOwnProperty(h) && Vs(a[h]) && !i[r(a[h])]) {
                o = a[h];
                break;
            }
            o && (i[r(o)] = !0);
        }
    }
    function Vs(t) {
        return t && "category" !== t.type && "time" !== t.type && function(t) {
            var e = t.scale.getExtent(), n = e[0], i = e[1];
            return !(n > 0 && i > 0 || 0 > n && 0 > i);
        }(t);
    }
    function Hs(t) {
        return p(Av, function(e) {
            var n = t.getReferringComponents(e)[0];
            if (Lu && !n) throw new Error(e + ' "' + C(t.get(e + "Index"), t.get(e + "Id"), 0) + '" not found');
            return n;
        });
    }
    function Gs(t) {
        return "cartesian2d" === t.get("coordinateSystem");
    }
    function Ws(t, e) {
        var n = t.mapDimension("defaultedLabel", !0), i = n.length;
        if (1 === i) return ao(t, e, n[0]);
        if (i) {
            for (var r = [], o = 0; o < n.length; o++) {
                var a = ao(t, e, n[o]);
                r.push(a);
            }
            return r.join(" ");
        }
    }
    function Xs(t, e) {
        "outside" === t.textPosition && (t.textPosition = e);
    }
    function Us(t, e, n) {
        var i = t.getArea(), r = t.getBaseAxis().isHorizontal(), o = i.x, a = i.y, s = i.width, l = i.height, u = n.get("lineStyle.width") || 2;
        o -= u / 2, a -= u / 2, s += u, l += u, o = Math.floor(o), s = Math.round(s);
        var h = new yf({
            shape: {
                x: o,
                y: a,
                width: s,
                height: l
            }
        });
        return e && (h.shape[r ? "width" : "height"] = 0, Ui(h, {
            shape: {
                width: s,
                height: l
            }
        }, n)), h;
    }
    function Ys(t, e, n) {
        var i = t.getArea(), r = new hf({
            shape: {
                cx: ir(t.cx, 1),
                cy: ir(t.cy, 1),
                r0: ir(i.r0, 1),
                r: ir(i.r, 1),
                startAngle: i.startAngle,
                endAngle: i.endAngle,
                clockwise: i.clockwise
            }
        });
        return e && (r.shape.endAngle = i.startAngle, Ui(r, {
            shape: {
                endAngle: i.endAngle
            }
        }, n)), r;
    }
    function qs(t, e, n) {
        n.style.text = null, Xi(n, {
            shape: {
                width: 0
            }
        }, e, t, function() {
            n.parent && n.parent.remove(n);
        });
    }
    function js(t, e, n) {
        n.style.text = null, Xi(n, {
            shape: {
                r: n.shape.r0
            }
        }, e, t, function() {
            n.parent && n.parent.remove(n);
        });
    }
    function Zs(t) {
        return null != t.startAngle && null != t.endAngle && t.startAngle === t.endAngle;
    }
    function Ks(t, e, n, i, r, o, a, l) {
        var u = e.getItemVisual(n, "color"), h = e.getItemVisual(n, "opacity"), c = e.getVisual("borderColor"), d = i.getModel("itemStyle"), f = i.getModel("emphasis.itemStyle").getBarItemStyle();
        l || t.setShape("r", d.get("barBorderRadius") || 0), t.useStyle(s({
            stroke: Zs(r) ? "none" : c,
            fill: Zs(r) ? "none" : u,
            opacity: h
        }, d.getBarItemStyle()));
        var p = i.getShallow("cursor");
        p && t.attr("cursor", p);
        a ? r.height : r.width;
        l || function(t, e, n, i, r, o) {
            Bi(t, e, n.getModel("label"), n.getModel("emphasis.label"), {
                labelFetcher: r,
                labelDataIndex: o,
                defaultText: Ws(r.getData(), o),
                isRectText: !0,
                autoColor: i
            }), Xs(t), Xs(e);
        }(t.style, f, i, u, o, n), Zs(r) && (f.fill = f.stroke = "none"), Pi(t, f);
    }
    function $s(t, e, n) {
        var i = t.getData(), r = [], o = i.getLayout("valueAxisHorizontal") ? 1 : 0;
        r[1 - o] = i.getLayout("valueAxisStart");
        var a = i.getLayout("largeDataIndices"), s = i.getLayout("barWidth"), l = t.getModel("backgroundStyle");
        if (t.get("showBackground", !0)) {
            var u = i.getLayout("largeBackgroundPoints"), h = [];
            h[1 - o] = i.getLayout("backgroundStart");
            var c = new Vv({
                shape: {
                    points: u
                },
                incremental: !!n,
                __startPoint: h,
                __baseDimIdx: o,
                __largeDataIndices: a,
                __barWidth: s,
                silent: !0,
                z2: 0
            });
            (function(t, e, n) {
                var i = e.get("borderColor") || e.get("color"), r = e.getItemStyle([ "color", "borderColor" ]);
                t.useStyle(r), t.style.fill = null, t.style.stroke = i, t.style.lineWidth = n.getLayout("barWidth");
            })(c, l, i), e.add(c);
        }
        var d = new Vv({
            shape: {
                points: i.getLayout("largePoints")
            },
            incremental: !!n,
            __startPoint: r,
            __baseDimIdx: o,
            __largeDataIndices: a,
            __barWidth: s
        });
        e.add(d), function(t, e, n) {
            var i = n.getVisual("borderColor") || n.getVisual("color"), r = e.getModel("itemStyle").getItemStyle([ "color", "borderColor" ]);
            t.useStyle(r), t.style.fill = null, t.style.stroke = i, t.style.lineWidth = n.getLayout("barWidth");
        }(d, t, i), d.seriesIndex = t.seriesIndex, t.get("silent") || (d.on("mousedown", Hv), 
        d.on("mousemove", Hv));
    }
    function Qs(t, e, n) {
        var i, r = "polar" === n.type;
        return i = r ? n.getArea() : n.grid.getRect(), r ? {
            cx: i.cx,
            cy: i.cy,
            r0: t ? i.r0 : e.r0,
            r: t ? i.r : e.r,
            startAngle: t ? e.startAngle : 0,
            endAngle: t ? e.endAngle : 2 * Math.PI
        } : {
            x: t ? e.x : i.x,
            y: t ? i.y : e.y,
            width: t ? e.width : i.width,
            height: t ? i.height : e.height
        };
    }
    function Js(t) {
        t && (t.ignore = !0);
    }
    function tl(t, e) {
        var n = t && t.getBoundingRect().clone(), i = e && e.getBoundingRect().clone();
        if (n && i) {
            var r = yt([]);
            return bt(r, r, -t.rotation), n.applyTransform(_t([], r, t.getLocalTransform())), 
            i.applyTransform(_t([], r, e.getLocalTransform())), n.intersect(i);
        }
    }
    function el(t) {
        return "middle" === t || "center" === t;
    }
    function nl(t, e, n, i, r) {
        for (var o = [], a = [], s = [], l = 0; l < t.length; l++) {
            var u = t[l].coord;
            a[0] = u, a[1] = 0, s[0] = u, s[1] = n, e && ($(a, a, e), $(s, s, e));
            var h = new _f({
                anid: r + "_" + t[l].tickValue,
                subPixelOptimize: !0,
                shape: {
                    x1: a[0],
                    y1: a[1],
                    x2: s[0],
                    y2: s[1]
                },
                style: i,
                z2: 2,
                silent: !0
            });
            o.push(h);
        }
        return o;
    }
    function il(t, e) {
        var n = {
            axesInfo: {},
            seriesInvolved: !1,
            coordSysAxesInfo: {},
            coordSysMap: {}
        };
        return function(t, e, n) {
            var i = e.getComponent("tooltip"), r = e.getComponent("axisPointer"), o = r.get("link", !0) || [], a = [];
            jv(n.getCoordinateSystems(), function(n) {
                function s(i, s, l) {
                    var c = l.model.getModel("axisPointer", r), d = c.get("show");
                    if (d && ("auto" !== d || i || ll(c))) {
                        null == s && (s = c.get("triggerTooltip"));
                        var f = (c = i ? rl(l, h, r, e, i, s) : c).get("snap"), p = ul(l.model), g = s || f || "category" === l.type, m = t.axesInfo[p] = {
                            key: p,
                            axis: l,
                            coordSys: n,
                            axisPointerModel: c,
                            triggerTooltip: s,
                            involveSeries: g,
                            snap: f,
                            useHandle: ll(c),
                            seriesModels: []
                        };
                        u[p] = m, t.seriesInvolved |= g;
                        var v = function(t, e) {
                            for (var n = e.model, i = e.dim, r = 0; r < t.length; r++) {
                                var o = t[r] || {};
                                if (ol(o[i + "AxisId"], n.id) || ol(o[i + "AxisIndex"], n.componentIndex) || ol(o[i + "AxisName"], n.name)) return r;
                            }
                        }(o, l);
                        if (null != v) {
                            var y = a[v] || (a[v] = {
                                axesInfo: {}
                            });
                            y.axesInfo[p] = m, y.mapper = o[v].mapper, m.linkGroup = y;
                        }
                    }
                }
                if (n.axisPointerEnabled) {
                    var l = ul(n.model), u = t.coordSysAxesInfo[l] = {};
                    t.coordSysMap[l] = n;
                    var h = n.model.getModel("tooltip", i);
                    if (jv(n.getAxes(), Zv(s, !1, null)), n.getTooltipAxes && i && h.get("show")) {
                        var c = "axis" === h.get("trigger"), d = "cross" === h.get("axisPointer.type"), f = n.getTooltipAxes(h.get("axisPointer.axis"));
                        (c || d) && jv(f.baseAxes, Zv(s, !d || "cross", c)), d && jv(f.otherAxes, Zv(s, "cross", !1));
                    }
                }
            });
        }(n, t, e), n.seriesInvolved && function(t, e) {
            e.eachSeries(function(e) {
                var n = e.coordinateSystem, i = e.get("tooltip.trigger", !0), r = e.get("tooltip.show", !0);
                n && "none" !== i && !1 !== i && "item" !== i && !1 !== r && !1 !== e.get("axisPointer.show", !0) && jv(t.coordSysAxesInfo[ul(n.model)], function(t) {
                    var i = t.axis;
                    n.getAxis(i.dim) === i && (t.seriesModels.push(e), null == t.seriesDataCount && (t.seriesDataCount = 0), 
                    t.seriesDataCount += e.getData().count());
                });
            }, this);
        }(n, t), n;
    }
    function rl(t, e, n, r, o, a) {
        var l = e.getModel("axisPointer"), u = {};
        jv([ "type", "snap", "lineStyle", "shadowStyle", "label", "animation", "animationDurationUpdate", "animationEasingUpdate", "z" ], function(t) {
            u[t] = i(l.get(t));
        }), u.snap = "category" !== t.type && !!a, "cross" === l.get("type") && (u.type = "line");
        var h = u.label || (u.label = {});
        if (null == h.show && (h.show = !1), "cross" === o) {
            var c = l.get("label.show");
            if (h.show = null == c || c, !a) {
                var d = u.lineStyle = l.get("crossStyle");
                d && s(h, d.textStyle);
            }
        }
        return t.model.getModel("axisPointer", new $i(u, n, r));
    }
    function ol(t, e) {
        return "all" === t || x(t) && u(t, e) >= 0 || t === e;
    }
    function al(t) {
        var e = sl(t);
        if (e) {
            var n = e.axisPointerModel, i = e.axis.scale, r = n.option, o = n.get("status"), a = n.get("value");
            null != a && (a = i.parse(a));
            var s = ll(n);
            null == o && (r.status = s ? "show" : "hide");
            var l = i.getExtent().slice();
            l[0] > l[1] && l.reverse(), (null == a || a > l[1]) && (a = l[1]), a < l[0] && (a = l[0]), 
            r.value = a, s && (r.status = e.axis.scale.isBlank() ? "hide" : "show");
        }
    }
    function sl(t) {
        var e = (t.ecModel.getComponent("axisPointer") || {}).coordSysAxesInfo;
        return e && e.axesInfo[ul(t)];
    }
    function ll(t) {
        return !!t.get("handle.show");
    }
    function ul(t) {
        return t.type + "||" + t.id;
    }
    function hl(t, e, n, i, r, o) {
        var a = Kv.getAxisPointerClass(t.axisPointerClass);
        if (a) {
            var s = function(t) {
                var e = sl(t);
                return e && e.axisPointerModel;
            }(e);
            s ? (t._axisPointer || (t._axisPointer = new a())).render(e, s, i, o) : cl(t, i);
        }
    }
    function cl(t, e, n) {
        var i = t._axisPointer;
        i && i.dispose(e, n), t._axisPointer = null;
    }
    function dl(t, e, n) {
        n = n || {};
        var i = t.coordinateSystem, r = e.axis, o = {}, a = r.getAxesOnZeroOf()[0], s = r.position, l = a ? "onZero" : s, u = r.dim, h = i.getRect(), c = [ h.x, h.x + h.width, h.y, h.y + h.height ], d = {
            left: 0,
            right: 1,
            top: 0,
            bottom: 1,
            onZero: 2
        }, f = e.get("offset") || 0, p = "x" === u ? [ c[2] - f, c[3] + f ] : [ c[0] - f, c[1] + f ];
        if (a) {
            var g = a.toGlobalCoord(a.dataToCoord(0));
            p[d.onZero] = Math.max(Math.min(g, p[1]), p[0]);
        }
        o.position = [ "y" === u ? p[d[l]] : c[0], "x" === u ? p[d[l]] : c[3] ], o.rotation = Math.PI / 2 * ("x" === u ? 0 : 1);
        o.labelDirection = o.tickDirection = o.nameDirection = {
            top: -1,
            bottom: 1,
            left: -1,
            right: 1
        }[s], o.labelOffset = a ? p[d[s]] - p[d.onZero] : 0, e.get("axisTick.inside") && (o.tickDirection = -o.tickDirection), 
        C(n.labelInside, e.get("axisLabel.inside")) && (o.labelDirection = -o.labelDirection);
        var m = e.get("axisLabel.rotate");
        return o.labelRotate = "top" === l ? -m : m, o.z2 = 1, o;
    }
    function fl(t, e, n) {
        jh.call(this), this.updateData(t, e, n);
    }
    function pl(t) {
        return [ t[0] / 2, t[1] / 2 ];
    }
    function gl(t, e) {
        this.parent.drift(t, e);
    }
    function ml(t, e) {
        if (!this.incremental && !this.useHoverLayer) if ("emphasis" === e) {
            var n = this.__symbolOriginalScale, i = n[1] / n[0], r = {
                scale: [ Math.max(1.1 * n[0], n[0] + 3), Math.max(1.1 * n[1], n[1] + 3 * i) ]
            };
            this.animateTo(r, 400, "elasticOut");
        } else "normal" === e && this.animateTo({
            scale: this.__symbolOriginalScale
        }, 400, "elasticOut");
    }
    function vl(t) {
        this.group = new jh(), this._symbolCtor = t || fl;
    }
    function yl(t, e, n, i) {
        return !(!e || isNaN(e[0]) || isNaN(e[1]) || i.isIgnore && i.isIgnore(n) || i.clipShape && !i.clipShape.contain(e[0], e[1]) || "none" === t.getItemVisual(n, "symbol"));
    }
    function xl(t) {
        return null == t || b(t) || (t = {
            isIgnore: t
        }), t || {};
    }
    function _l(t) {
        var e = t.hostModel;
        return {
            itemStyle: e.getModel("itemStyle").getItemStyle([ "color" ]),
            hoverItemStyle: e.getModel("emphasis.itemStyle").getItemStyle(),
            symbolRotate: e.get("symbolRotate"),
            symbolOffset: e.get("symbolOffset"),
            hoverAnimation: e.get("hoverAnimation"),
            labelModel: e.getModel("label"),
            hoverLabelModel: e.getModel("emphasis.label"),
            cursorStyle: e.get("cursor")
        };
    }
    function wl(t, e, n) {
        var i, r = t.getBaseAxis(), o = t.getOtherAxis(r), a = function(t, e) {
            var n = 0, i = t.scale.getExtent();
            return "start" === e ? n = i[0] : "end" === e ? n = i[1] : i[0] > 0 ? n = i[0] : i[1] < 0 && (n = i[1]), 
            n;
        }(o, n), s = r.dim, l = o.dim, u = e.mapDimension(l), h = e.mapDimension(s), c = "x" === l || "radius" === l ? 1 : 0, d = p(t.dimensions, function(t) {
            return e.mapDimension(t);
        }), f = e.getCalculationInfo("stackResultDimension");
        return (i |= Ya(e, d[0])) && (d[0] = f), (i |= Ya(e, d[1])) && (d[1] = f), {
            dataDimsForPoint: d,
            valueStart: a,
            valueAxisDim: l,
            baseAxisDim: s,
            stacked: !!i,
            valueDim: u,
            baseDim: h,
            baseDataOffset: c,
            stackedOverDimension: e.getCalculationInfo("stackedOverDimension")
        };
    }
    function bl(t, e, n, i) {
        var r = NaN;
        t.stacked && (r = n.get(n.getCalculationInfo("stackedOverDimension"), i)), isNaN(r) && (r = t.valueStart);
        var o = t.baseDataOffset, a = [];
        return a[o] = n.get(t.baseDim, i), a[1 - o] = r, e.dataToPoint(a);
    }
    function Sl(t) {
        return isNaN(t[0]) || isNaN(t[1]);
    }
    function Ml(t, e, n, i, r, o, a, s, l, u) {
        return "none" !== u && u ? Il.apply(this, arguments) : Tl.apply(this, arguments);
    }
    function Il(t, e, n, i, r, o, a, s, l, u, h) {
        for (var c = 0, d = n, f = 0; i > f; f++) {
            var p = e[d];
            if (d >= r || 0 > d) break;
            if (Sl(p)) {
                if (h) {
                    d += o;
                    continue;
                }
                break;
            }
            if (d === n) t[o > 0 ? "moveTo" : "lineTo"](p[0], p[1]); else if (l > 0) {
                var g = e[c], m = "y" === u ? 1 : 0, v = (p[m] - g[m]) * l;
                cy(fy, g), fy[m] = g[m] + v, cy(py, p), py[m] = p[m] - v, t.bezierCurveTo(fy[0], fy[1], py[0], py[1], p[0], p[1]);
            } else t.lineTo(p[0], p[1]);
            c = d, d += o;
        }
        return f;
    }
    function Tl(t, e, n, i, r, o, a, s, l, u, h) {
        for (var c = 0, d = n, f = 0; i > f; f++) {
            var p = e[d];
            if (d >= r || 0 > d) break;
            if (Sl(p)) {
                if (h) {
                    d += o;
                    continue;
                }
                break;
            }
            if (d === n) t[o > 0 ? "moveTo" : "lineTo"](p[0], p[1]), cy(fy, p); else if (l > 0) {
                var g = d + o, m = e[g];
                if (h) for (;m && Sl(e[g]); ) m = e[g += o];
                var v = .5, y = e[c];
                if (!(m = e[g]) || Sl(m)) cy(py, p); else {
                    var x, _;
                    if (Sl(m) && !h && (m = p), X(dy, m, y), "x" === u || "y" === u) {
                        var w = "x" === u ? 0 : 1;
                        x = Math.abs(p[w] - y[w]), _ = Math.abs(p[w] - m[w]);
                    } else x = Ju(p, y), _ = Ju(p, m);
                    hy(py, p, dy, -l * (1 - (v = _ / (_ + x))));
                }
                ly(fy, fy, s), uy(fy, fy, a), ly(py, py, s), uy(py, py, a), t.bezierCurveTo(fy[0], fy[1], py[0], py[1], p[0], p[1]), 
                hy(fy, p, dy, l * v);
            } else t.lineTo(p[0], p[1]);
            c = d, d += o;
        }
        return f;
    }
    function Cl(t, e) {
        var n = [ 1 / 0, 1 / 0 ], i = [ -1 / 0, -1 / 0 ];
        if (e) for (var r = 0; r < t.length; r++) {
            var o = t[r];
            o[0] < n[0] && (n[0] = o[0]), o[1] < n[1] && (n[1] = o[1]), o[0] > i[0] && (i[0] = o[0]), 
            o[1] > i[1] && (i[1] = o[1]);
        }
        return {
            min: e ? n : i,
            max: e ? i : n
        };
    }
    function Dl(t, e) {
        if (t.length === e.length) {
            for (var n = 0; n < t.length; n++) {
                var i = t[n], r = e[n];
                if (i[0] !== r[0] || i[1] !== r[1]) return;
            }
            return !0;
        }
    }
    function Al(t, e) {
        var n = [], i = [], r = [], o = [];
        return Hn(t, n, i), Hn(e, r, o), Math.max(Math.abs(n[0] - r[0]), Math.abs(n[1] - r[1]), Math.abs(i[0] - o[0]), Math.abs(i[1] - o[1]));
    }
    function kl(t) {
        return "number" == typeof t ? t : t ? .5 : 0;
    }
    function Pl(t, e, n) {
        for (var i = e.getBaseAxis(), r = "x" === i.dim || "radius" === i.dim ? 0 : 1, o = [], a = 0; a < t.length - 1; a++) {
            var s = t[a + 1], l = t[a];
            o.push(l);
            var u = [];
            switch (n) {
              case "end":
                u[r] = s[r], u[1 - r] = l[1 - r], o.push(u);
                break;

              case "middle":
                var h = (l[r] + s[r]) / 2, c = [];
                u[r] = c[r] = h, u[1 - r] = l[1 - r], c[1 - r] = s[1 - r], o.push(u), o.push(c);
                break;

              default:
                u[r] = l[r], u[1 - r] = s[1 - r], o.push(u);
            }
        }
        return t[a] && o.push(t[a]), o;
    }
    function Ll(t, e) {
        var n = t.getVisual("visualMeta");
        if (n && n.length && t.count()) {
            if ("cartesian2d" !== e.type) return void (Lu && console.warn("Visual map on line style is only supported on cartesian2d."));
            for (var i, r, o = n.length - 1; o >= 0; o--) {
                var a = n[o].dimension, s = t.dimensions[a], l = t.getDimensionInfo(s);
                if ("x" === (i = l && l.coordDim) || "y" === i) {
                    r = n[o];
                    break;
                }
            }
            if (!r) return void (Lu && console.warn("Visual map on line style only support x or y dimension."));
            var u = e.getAxis(i), h = p(r.stops, function(t) {
                return {
                    coord: u.toGlobalCoord(u.dataToCoord(t.value)),
                    color: t.color
                };
            }), c = h.length, d = r.outerColors.slice();
            c && h[0].coord > h[c - 1].coord && (h.reverse(), d.reverse());
            var g = h[0].coord - 10, m = h[c - 1].coord + 10, v = m - g;
            if (.001 > v) return "transparent";
            f(h, function(t) {
                t.offset = (t.coord - g) / v;
            }), h.push({
                offset: c ? h[c - 1].offset : .5,
                color: d[1] || "transparent"
            }), h.unshift({
                offset: c ? h[0].offset : .5,
                color: d[0] || "transparent"
            });
            var y = new Tf(0, 0, 0, 0, h, !0);
            return y[i] = g, y[i + "2"] = m, y;
        }
    }
    function Ol(t, e, n) {
        var i = t.get("showAllSymbol"), r = "auto" === i;
        if (!i || r) {
            var o = n.getAxesByScale("ordinal")[0];
            if (o && (!r || !function(t, e) {
                var n = t.getExtent(), i = Math.abs(n[1] - n[0]) / t.scale.count();
                isNaN(i) && (i = 0);
                for (var r = e.count(), o = Math.max(1, Math.round(r / 5)), a = 0; r > a; a += o) if (1.5 * fl.getSymbolSize(e, a)[t.isHorizontal() ? 1 : 0] > i) return !1;
                return !0;
            }(o, e))) {
                var a = e.mapDimension(o.dim), s = {};
                return f(o.getViewLabels(), function(t) {
                    s[t.tickValue] = 1;
                }), function(t) {
                    return !s.hasOwnProperty(e.get(a, t));
                };
            }
        }
    }
    function El(t, e, n) {
        if ("cartesian2d" === t.type) {
            var i = t.getBaseAxis().isHorizontal(), r = Us(t, e, n);
            if (!n.get("clip", !0)) {
                var o = r.shape, a = Math.max(o.width, o.height);
                i ? (o.y -= a, o.height += 2 * a) : (o.x -= a, o.width += 2 * a);
            }
            return r;
        }
        return Ys(t, e, n);
    }
    function Bl(t, e) {
        this.getAllNames = function() {
            var t = e();
            return t.mapArray(t.getName);
        }, this.containName = function(t) {
            return e().indexOfName(t) >= 0;
        }, this.indexOfName = function(e) {
            return t().indexOfName(e);
        }, this.getItemVisual = function(e, n) {
            return t().getItemVisual(e, n);
        };
    }
    function Nl(t, e, n, i) {
        var r = e.getData(), o = this.dataIndex, a = r.getName(o), s = e.get("selectedOffset");
        i.dispatchAction({
            type: "pieToggleSelect",
            from: t,
            name: a,
            seriesId: e.id
        }), r.each(function(t) {
            zl(r.getItemGraphicEl(t), r.getItemLayout(t), e.isSelected(r.getName(t)), s, n);
        });
    }
    function zl(t, e, n, i, r) {
        var o = (e.startAngle + e.endAngle) / 2, a = n ? i : 0, s = [ Math.cos(o) * a, Math.sin(o) * a ];
        r ? t.animate().when(200, {
            position: s
        }).start("bounceOut") : t.attr("position", s);
    }
    function Rl(t, e) {
        jh.call(this);
        var n = new hf({
            z2: 2
        }), i = new gf(), r = new af();
        this.add(n), this.add(i), this.add(r), this.updateData(t, e, !0);
    }
    function Fl(t, e, n, i, r, o, a, s, l, u) {
        function h(e, n, i) {
            for (var r = e; n > r && !(t[r].y + i > l + a); r++) if (t[r].y += i, r > e && n > r + 1 && t[r + 1].y > t[r].y + t[r].height) return void c(r, i / 2);
            c(n - 1, i / 2);
        }
        function c(e, n) {
            for (var i = e; i >= 0 && !(t[i].y - n < l) && (t[i].y -= n, !(i > 0 && t[i].y > t[i - 1].y + t[i - 1].height)); i--) ;
        }
        function d(t, e, n, i, r, o) {
            for (var a = e ? Number.MAX_VALUE : 0, s = 0, l = t.length; l > s; s++) if ("none" === t[s].labelAlignTo) {
                var u = Math.abs(t[s].y - i), h = t[s].len, c = t[s].len2, d = r + h > u ? Math.sqrt((r + h + c) * (r + h + c) - u * u) : Math.abs(t[s].x - n);
                e && d >= a && (d = a - 10), !e && a >= d && (d = a + 10), t[s].x = n + d * o, a = d;
            }
        }
        t.sort(function(t, e) {
            return t.y - e.y;
        });
        for (var f, p = 0, g = t.length, m = [], v = [], y = 0; g > y; y++) {
            if ("outer" === t[y].position && "labelLine" === t[y].labelAlignTo) {
                var x = t[y].x - u;
                t[y].linePoints[1][0] += x, t[y].x = u;
            }
            0 > (f = t[y].y - p) && h(y, g, -f), p = t[y].y + t[y].height;
        }
        0 > a - p && c(g - 1, p - a);
        for (y = 0; g > y; y++) t[y].y >= n ? v.push(t[y]) : m.push(t[y]);
        d(m, !1, e, n, i, r), d(v, !0, e, n, i, r);
    }
    function Vl(t) {
        return "center" === t.position;
    }
    function Hl(t, e, n) {
        var i, r = {}, o = "toggleSelected" === t;
        return n.eachComponent("legend", function(n) {
            o && null != i ? n[i ? "select" : "unSelect"](e.name) : "allSelect" === t || "inverseSelect" === t ? n[t]() : (n[t](e.name), 
            i = n.isSelected(e.name)), f(n.getData(), function(t) {
                var e = t.get("name");
                if ("\n" !== e && "" !== e) {
                    var i = n.isSelected(e);
                    r[e] = r.hasOwnProperty(e) ? r[e] && i : i;
                }
            });
        }), "allSelect" === t || "inverseSelect" === t ? {
            selected: r
        } : {
            name: e.name,
            selected: r
        };
    }
    function Gl(t, e, n, i, r, o) {
        var a;
        return "line" !== e && e.indexOf("empty") < 0 ? (a = n.getItemStyle(), t.style.stroke = i, 
        o || (a.stroke = r)) : a = n.getItemStyle([ "borderWidth", "borderColor" ]), t.setStyle(a);
    }
    function Wl(t, e, n, i) {
        Ul(t, e, n, i), n.dispatchAction({
            type: "legendToggleSelect",
            name: null != t ? t : e
        }), Xl(t, e, n, i);
    }
    function Xl(t, e, n, i) {
        var r = n.getZr().storage.getDisplayList()[0];
        r && r.useHoverLayer || n.dispatchAction({
            type: "highlight",
            seriesName: t,
            name: e,
            excludeSeriesId: i
        });
    }
    function Ul(t, e, n, i) {
        var r = n.getZr().storage.getDisplayList()[0];
        r && r.useHoverLayer || n.dispatchAction({
            type: "downplay",
            seriesName: t,
            name: e,
            excludeSeriesId: i
        });
    }
    function Yl(t, e, n) {
        var i = [ 1, 1 ];
        i[t.getOrient().index] = 0, Mr(e, n, {
            type: "box",
            ignoreSize: i
        });
    }
    function ql(t, e, n, i, r) {
        var o = t.axis;
        if (!o.scale.isBlank() && o.containData(e)) {
            if (!t.involveSeries) return void n.showPointer(t, e);
            var s = function(t, e) {
                var n = e.axis, i = n.dim, r = t, o = [], a = Number.MAX_VALUE, s = -1;
                return Vy(e.seriesModels, function(e) {
                    var l, u, h = e.getData().mapDimension(i, !0);
                    if (e.getAxisTooltipData) {
                        var c = e.getAxisTooltipData(h, t, n);
                        u = c.dataIndices, l = c.nestestValue;
                    } else {
                        if (!(u = e.getData().indicesOfNearest(h[0], t, "category" === n.type ? .5 : null)).length) return;
                        l = e.getData().get(h[0], u[0]);
                    }
                    if (null != l && isFinite(l)) {
                        var d = t - l, f = Math.abs(d);
                        a >= f && ((a > f || d >= 0 && 0 > s) && (a = f, s = d, r = l, o.length = 0), Vy(u, function(t) {
                            o.push({
                                seriesIndex: e.seriesIndex,
                                dataIndexInside: t,
                                dataIndex: e.getData().getRawIndex(t)
                            });
                        }));
                    }
                }), {
                    payloadBatch: o,
                    snapToValue: r
                };
            }(e, t), l = s.payloadBatch, u = s.snapToValue;
            l[0] && null == r.seriesIndex && a(r, l[0]), !i && t.snap && o.containData(u) && null != u && (e = u), 
            n.showPointer(t, e, l, r), n.showTooltip(t, s, u);
        }
    }
    function jl(t, e, n, i) {
        t[e.key] = {
            value: n,
            payloadBatch: i
        };
    }
    function Zl(t, e, n, i) {
        var r = n.payloadBatch, o = e.axis, a = o.model, s = e.axisPointerModel;
        if (e.triggerTooltip && r.length) {
            var l = e.coordSys.model, u = ul(l), h = t.map[u];
            h || (h = t.map[u] = {
                coordSysId: l.id,
                coordSysIndex: l.componentIndex,
                coordSysType: l.type,
                coordSysMainType: l.mainType,
                dataByAxis: []
            }, t.list.push(h)), h.dataByAxis.push({
                axisDim: o.dim,
                axisIndex: a.componentIndex,
                axisType: a.type,
                axisId: a.id,
                value: i,
                valueLabelOpt: {
                    precision: s.get("label.precision"),
                    formatter: s.get("label.formatter")
                },
                seriesDataIndices: r.slice()
            });
        }
    }
    function Kl(t, e, n) {
        var i = n.getZr(), r = "axisPointerLastHighlights", o = Gy(i)[r] || {}, a = Gy(i)[r] = {};
        Vy(t, function(t) {
            var e = t.axisPointerModel.option;
            "show" === e.status && Vy(e.seriesDataIndices, function(t) {
                var e = t.seriesIndex + " | " + t.dataIndex;
                a[e] = t;
            });
        });
        var s = [], l = [];
        f(o, function(t, e) {
            !a[e] && l.push(t);
        }), f(a, function(t, e) {
            !o[e] && s.push(t);
        }), l.length && n.dispatchAction({
            type: "downplay",
            escapeConnect: !0,
            batch: l
        }), s.length && n.dispatchAction({
            type: "highlight",
            escapeConnect: !0,
            batch: s
        });
    }
    function $l(t) {
        var e = t.axis.model, n = {}, i = n.axisDim = t.axis.dim;
        return n.axisIndex = n[i + "AxisIndex"] = e.componentIndex, n.axisName = n[i + "AxisName"] = e.name, 
        n.axisId = n[i + "AxisId"] = e.id, n;
    }
    function Ql(t) {
        return !t || null == t[0] || isNaN(t[0]) || null == t[1] || isNaN(t[1]);
    }
    function Jl(t, e, n) {
        if (!Bu.node) {
            var i = e.getZr();
            Wy(i).records || (Wy(i).records = {}), function(t, e) {
                function n(n, i) {
                    t.on(n, function(n) {
                        var r = function(t) {
                            var e = {
                                showTip: [],
                                hideTip: []
                            };
                            return {
                                dispatchAction: function n(i) {
                                    var r = e[i.type];
                                    r ? r.push(i) : (i.dispatchAction = n, t.dispatchAction(i));
                                },
                                pendings: e
                            };
                        }(e);
                        Xy(Wy(t).records, function(t) {
                            t && i(t, n, r.dispatchAction);
                        }), function(t, e) {
                            var n, i = t.showTip.length, r = t.hideTip.length;
                            i ? n = t.showTip[i - 1] : r && (n = t.hideTip[r - 1]), n && (n.dispatchAction = null, 
                            e.dispatchAction(n));
                        }(r.pendings, e);
                    });
                }
                Wy(t).initialized || (Wy(t).initialized = !0, n("click", y(eu, "click")), n("mousemove", y(eu, "mousemove")), 
                n("globalout", tu));
            }(i, e), (Wy(i).records[t] || (Wy(i).records[t] = {})).handler = n;
        }
    }
    function tu(t, e, n) {
        t.handler("leave", null, n);
    }
    function eu(t, e, n, i) {
        e.handler(t, n, i);
    }
    function nu(t, e) {
        if (!Bu.node) {
            var n = e.getZr();
            (Wy(n).records || {})[t] && (Wy(n).records[t] = null);
        }
    }
    function iu() {}
    function ru(t, e, n, i) {
        (function t(e, n) {
            if (b(e) && b(n)) {
                var i = !0;
                return f(n, function(n, r) {
                    i = i && t(e[r], n);
                }), !!i;
            }
            return e === n;
        })(Yy(n).lastProp, i) || (Yy(n).lastProp = i, e ? Xi(n, i, t) : (n.stopAnimation(), 
        n.attr(i)));
    }
    function ou(t, e) {
        t[e.get("label.show") ? "show" : "hide"]();
    }
    function au(t) {
        return {
            position: t.position.slice(),
            rotation: t.rotation || 0
        };
    }
    function su(t, e, n) {
        var i = e.get("z"), r = e.get("zlevel");
        t && t.traverse(function(t) {
            "group" !== t.type && (null != i && (t.z = i), null != r && (t.zlevel = r), t.silent = n);
        });
    }
    function lu(t, e, n, i, r) {
        var o = uu(n.get("value"), e.axis, e.ecModel, n.get("seriesDataIndices"), {
            precision: n.get("label.precision"),
            formatter: n.get("label.formatter")
        }), a = n.getModel("label"), s = Jf(a.get("padding") || 0), l = a.getFont(), u = we(o, l), h = r.position, c = u.width + s[1] + s[3], d = u.height + s[0] + s[2], f = r.align;
        "right" === f && (h[0] -= c), "center" === f && (h[0] -= c / 2);
        var p = r.verticalAlign;
        "bottom" === p && (h[1] -= d), "middle" === p && (h[1] -= d / 2), function(t, e, n, i) {
            var r = i.getWidth(), o = i.getHeight();
            t[0] = Math.min(t[0] + e, r) - e, t[1] = Math.min(t[1] + n, o) - n, t[0] = Math.max(t[0], 0), 
            t[1] = Math.max(t[1], 0);
        }(h, c, d, i);
        var g = a.get("backgroundColor");
        g && "auto" !== g || (g = e.get("axisLine.lineStyle.color")), t.label = {
            shape: {
                x: 0,
                y: 0,
                width: c,
                height: d,
                r: a.get("borderRadius")
            },
            position: h.slice(),
            style: {
                text: o,
                textFont: l,
                textFill: a.getTextColor(),
                textPosition: "inside",
                textPadding: s,
                fill: g,
                stroke: a.get("borderColor") || "transparent",
                lineWidth: a.get("borderWidth") || 0,
                shadowBlur: a.get("shadowBlur"),
                shadowColor: a.get("shadowColor"),
                shadowOffsetX: a.get("shadowOffsetX"),
                shadowOffsetY: a.get("shadowOffsetY")
            },
            z2: 10
        };
    }
    function uu(t, e, n, i, r) {
        t = e.scale.parse(t);
        var o = e.scale.getLabel(t, {
            precision: r.precision
        }), a = r.formatter;
        if (a) {
            var s = {
                value: gs(e, t),
                axisDimension: e.dim,
                axisIndex: e.index,
                seriesData: []
            };
            f(i, function(t) {
                var e = n.getSeriesByIndex(t.seriesIndex), i = t.dataIndexInside, r = e && e.getDataParams(i);
                r && s.seriesData.push(r);
            }), w(a) ? o = a.replace("{value}", o) : _(a) && (o = a(s));
        }
        return o;
    }
    function hu(t, e, n) {
        var i = vt();
        return bt(i, i, n.rotation), wt(i, i, n.position), Yi([ t.dataToCoord(e), (n.labelOffset || 0) + (n.labelDirection || 1) * (n.labelMargin || 0) ], i);
    }
    function cu(t, e, n) {
        return {
            x: t[n = n || 0],
            y: t[1 - n],
            width: e[n],
            height: e[1 - n]
        };
    }
    function du(t, e) {
        var n = {};
        return n[e.dim + "AxisIndex"] = e.index, t.getCartesian(n);
    }
    function fu(t) {
        return "x" === t.dim ? 0 : 1;
    }
    function pu(t) {
        var e = [], n = t.get("transitionDuration"), i = t.get("backgroundColor"), r = t.getModel("textStyle"), o = t.get("padding");
        return n && e.push(function(t) {
            var e = "cubic-bezier(0.23, 1, 0.32, 1)", n = "left " + t + "s " + e + ",top " + t + "s " + e;
            return p(Jy, function(t) {
                return t + "transition:" + n;
            }).join(";");
        }(n)), i && (Bu.canvasSupported ? e.push("background-Color:" + i) : (e.push("background-Color:#" + Ft(i)), 
        e.push("filter:alpha(opacity=70)"))), $y([ "width", "color", "radius" ], function(n) {
            var i = "border-" + n, r = Qy(i), o = t.get(r);
            null != o && e.push(i + ":" + o + ("color" === n ? "" : "px"));
        }), e.push(function(t) {
            var e = [], n = t.get("fontSize"), i = t.getTextColor();
            i && e.push("color:" + i), e.push("font:" + t.getFont());
            var r = t.get("lineHeight");
            null == r && (r = Math.round(3 * n / 2)), n && e.push("line-height:" + r + "px");
            var o = t.get("textShadowColor"), a = t.get("textShadowBlur") || 0, s = t.get("textShadowOffsetX") || 0, l = t.get("textShadowOffsetY") || 0;
            return a && e.push("text-shadow:" + s + "px " + l + "px " + a + "px " + o), $y([ "decoration", "align" ], function(n) {
                var i = t.get(n);
                i && e.push("text-" + n + ":" + i);
            }), e.join(";");
        }(r)), null != o && e.push("padding:" + Jf(o).join("px ") + "px"), e.join(";") + ";";
    }
    function gu(t, e, n, i, r) {
        var o = e && e.painter;
        if (n) {
            var a = o && o.getViewportRoot();
            a && function(t, e, n, i, r) {
                ot(ah, e, i, r, !0) && ot(t, n, ah[0], ah[1]);
            }(t, a, document.body, i, r);
        } else {
            t[0] = i, t[1] = r;
            var s = o && o.getViewportRootOffset();
            s && (t[0] += s.offsetLeft, t[1] += s.offsetTop);
        }
        t[2] = t[0] / e.getWidth(), t[3] = t[1] / e.getHeight();
    }
    function mu(t, e, n) {
        if (Bu.wxa) return null;
        var i = document.createElement("div");
        i.domBelongToZr = !0, this.el = i;
        var r = this._zr = e.getZr(), o = this._appendToBody = n && n.appendToBody;
        this._styleCoord = [ 0, 0, 0, 0 ], gu(this._styleCoord, r, o, e.getWidth() / 2, e.getHeight() / 2), 
        o ? document.body.appendChild(i) : t.appendChild(i), this._container = t, this._show = !1, 
        this._hideTimeout;
        var a = this;
        i.onmouseenter = function() {
            a._enterable && (clearTimeout(a._hideTimeout), a._show = !0), a._inContent = !0;
        }, i.onmousemove = function(t) {
            if (t = t || window.event, !a._enterable) {
                var e = r.handler;
                ht(r.painter.getViewportRoot(), t, !0), e.dispatch("mousemove", t);
            }
        }, i.onmouseleave = function() {
            a._enterable && a._show && a.hideLater(a._hideDelay), a._inContent = !1;
        };
    }
    function vu(t, e, n, i) {
        t[0] = n, t[1] = i, t[2] = t[0] / e.getWidth(), t[3] = t[1] / e.getHeight();
    }
    function yu(t) {
        var e = this._zr = t.getZr();
        this._styleCoord = [ 0, 0, 0, 0 ], vu(this._styleCoord, e, t.getWidth() / 2, t.getHeight() / 2), 
        this._show = !1, this._hideTimeout;
    }
    function xu(t) {
        for (var e = t.pop(); t.length; ) {
            var n = t.pop();
            n && ($i.isInstance(n) && (n = n.get("tooltip", !0)), "string" == typeof n && (n = {
                formatter: n
            }), e = new $i(n, e, e.ecModel));
        }
        return e;
    }
    function _u(t, e) {
        return t.dispatchAction || v(e.dispatchAction, e);
    }
    function wu(t) {
        return "center" === t || "middle" === t;
    }
    function bu(t) {
        pn(t, "label", [ "show" ]);
    }
    function Su(t, e, n, i, r, o) {
        var a = [], s = Ya(e, i) ? e.getCalculationInfo("stackResultDimension") : i, l = Tu(e, s, t), u = e.indicesOfNearest(s, l)[0];
        a[r] = e.get(n, u), a[o] = e.get(s, u);
        var h = e.get(i, u), c = rr(e.get(i, u));
        return (c = Math.min(c, 20)) >= 0 && (a[o] = +a[o].toFixed(c)), [ a, h ];
    }
    function Mu(t, e) {
        var n = t.getData(), r = t.coordinateSystem;
        if (e && !function(t) {
            return !isNaN(parseFloat(t.x)) && !isNaN(parseFloat(t.y));
        }(e) && !x(e.coord) && r) {
            var o = r.dimensions, a = function(t, e, n, i) {
                var r = {};
                return null != t.valueIndex || null != t.valueDim ? (r.valueDataDim = null != t.valueIndex ? e.getDimension(t.valueIndex) : t.valueDim, 
                r.valueAxis = n.getAxis(function(t, e) {
                    var n = t.getData(), i = n.dimensions;
                    e = n.getDimension(e);
                    for (var r = 0; r < i.length; r++) {
                        var o = n.getDimensionInfo(i[r]);
                        if (o.name === e) return o.coordDim;
                    }
                }(i, r.valueDataDim)), r.baseAxis = n.getOtherAxis(r.valueAxis), r.baseDataDim = e.mapDimension(r.baseAxis.dim)) : (r.baseAxis = i.getBaseAxis(), 
                r.valueAxis = n.getOtherAxis(r.baseAxis), r.baseDataDim = e.mapDimension(r.baseAxis.dim), 
                r.valueDataDim = e.mapDimension(r.valueAxis.dim)), r;
            }(e, n, r, t);
            if ((e = i(e)).type && ux[e.type] && a.baseAxis && a.valueAxis) {
                var s = sx(o, a.baseAxis.dim), l = sx(o, a.valueAxis.dim), u = ux[e.type](n, a.baseDataDim, a.valueDataDim, s, l);
                e.coord = u[0], e.value = u[1];
            } else {
                for (var h = [ null != e.xAxis ? e.xAxis : e.radiusAxis, null != e.yAxis ? e.yAxis : e.angleAxis ], c = 0; 2 > c; c++) ux[h[c]] && (h[c] = Tu(n, n.mapDimension(o[c]), h[c]));
                e.coord = h;
            }
        }
        return e;
    }
    function Iu(t, e) {
        return !(t && t.containData && e.coord && !function(t) {
            return !(isNaN(parseFloat(t.x)) && isNaN(parseFloat(t.y)));
        }(e)) || t.containData(e.coord);
    }
    function Tu(t, e, n) {
        if ("average" === n) {
            var i = 0, r = 0;
            return t.each(e, function(t) {
                isNaN(t) || (i += t, r++);
            }), i / r;
        }
        return "median" === n ? t.getMedian(e) : t.getDataExtent(e, !0)["max" === n ? 1 : 0];
    }
    function Cu(t) {
        return !isNaN(t) && !isFinite(t);
    }
    function Du(t, e, n) {
        var i = 1 - t;
        return Cu(e[i]) && Cu(n[i]);
    }
    function Au(t, e) {
        var n = e.coord[0], i = e.coord[1];
        return !("cartesian2d" !== t.type || !n || !i || !Du(1, n, i) && !Du(0, n, i)) || (Iu(t, {
            coord: n,
            x: e.x0,
            y: e.y0
        }) || Iu(t, {
            coord: i,
            x: e.x1,
            y: e.y1
        }));
    }
    function ku(t, e, n, i, r) {
        var o, a = i.coordinateSystem, s = t.getItemModel(e), l = nr(s.get(n[0]), r.getWidth()), u = nr(s.get(n[1]), r.getHeight());
        if (isNaN(l) || isNaN(u)) {
            if (i.getMarkerPosition) o = i.getMarkerPosition(t.getValues(n, e)); else {
                var h = [ f = t.get(n[0], e), p = t.get(n[1], e) ];
                a.clampData && a.clampData(h, h), o = a.dataToPoint(h, !0);
            }
            if ("cartesian2d" === a.type) {
                var c = a.getAxis("x"), d = a.getAxis("y"), f = t.get(n[0], e), p = t.get(n[1], e);
                Cu(f) ? o[0] = c.toGlobalCoord(c.getExtent()["x0" === n[0] ? 0 : 1]) : Cu(p) && (o[1] = d.toGlobalCoord(d.getExtent()["y0" === n[1] ? 0 : 1]));
            }
            isNaN(l) || (o[0] = l), isNaN(u) || (o[1] = u);
        } else o = [ l, u ];
        return o;
    }
    var Pu;
    "undefined" != typeof window ? Pu = window.__DEV__ : "undefined" != typeof global && (Pu = global.__DEV__), 
    void 0 === Pu && (Pu = !0);
    var Lu = Pu, Ou = 2311, Eu = function() {
        return Ou++;
    }, Bu = "object" == ("undefined" == typeof wx ? "undefined" : t(wx)) && "function" == typeof wx.getSystemInfoSync ? {
        browser: {},
        os: {},
        node: !1,
        wxa: !0,
        canvasSupported: !0,
        svgSupported: !1,
        touchEventsSupported: !0,
        domSupported: !1
    } : "undefined" == typeof document && "undefined" != typeof self ? {
        browser: {},
        os: {},
        node: !1,
        worker: !0,
        canvasSupported: !0,
        domSupported: !1
    } : "undefined" == typeof navigator ? {
        browser: {},
        os: {},
        node: !0,
        worker: !1,
        canvasSupported: !0,
        svgSupported: !0,
        domSupported: !1
    } : function(t) {
        var e = {}, n = t.match(/Firefox\/([\d.]+)/), i = t.match(/MSIE\s([\d.]+)/) || t.match(/Trident\/.+?rv:(([\d.]+))/), r = t.match(/Edge\/([\d.]+)/), o = /micromessenger/i.test(t);
        return n && (e.firefox = !0, e.version = n[1]), i && (e.ie = !0, e.version = i[1]), 
        r && (e.edge = !0, e.version = r[1]), o && (e.weChat = !0), {
            browser: e,
            os: {},
            node: !1,
            canvasSupported: !!document.createElement("canvas").getContext,
            svgSupported: "undefined" != typeof SVGRect,
            touchEventsSupported: "ontouchstart" in window && !e.ie && !e.edge,
            pointerEventsSupported: "onpointerdown" in window && (e.edge || e.ie && e.version >= 11),
            domSupported: "undefined" != typeof document
        };
    }(navigator.userAgent), Nu = {
        "[object Function]": 1,
        "[object RegExp]": 1,
        "[object Date]": 1,
        "[object Error]": 1,
        "[object CanvasGradient]": 1,
        "[object CanvasPattern]": 1,
        "[object Image]": 1,
        "[object Canvas]": 1
    }, zu = {
        "[object Int8Array]": 1,
        "[object Uint8Array]": 1,
        "[object Uint8ClampedArray]": 1,
        "[object Int16Array]": 1,
        "[object Uint16Array]": 1,
        "[object Int32Array]": 1,
        "[object Uint32Array]": 1,
        "[object Float32Array]": 1,
        "[object Float64Array]": 1
    }, Ru = Object.prototype.toString, Fu = Array.prototype, Vu = Fu.forEach, Hu = Fu.filter, Gu = Fu.slice, Wu = Fu.map, Xu = Fu.reduce, Uu = {}, Yu = function() {
        return Uu.createCanvas();
    };
    Uu.createCanvas = function() {
        return document.createElement("canvas");
    };
    var qu, ju = "__ec_primitive__";
    N.prototype = {
        constructor: N,
        get: function(t) {
            return this.data.hasOwnProperty(t) ? this.data[t] : null;
        },
        set: function(t, e) {
            return this.data[t] = e;
        },
        each: function(t, e) {
            for (var n in void 0 !== e && (t = v(t, e)), this.data) this.data.hasOwnProperty(n) && t(this.data[n], n);
        },
        removeKey: function(t) {
            delete this.data[t];
        }
    };
    var Zu = (Object.freeze || Object)({
        $override: n,
        clone: i,
        merge: r,
        mergeAll: o,
        extend: a,
        defaults: s,
        createCanvas: Yu,
        getContext: l,
        indexOf: u,
        inherits: h,
        mixin: c,
        isArrayLike: d,
        each: f,
        map: p,
        reduce: g,
        filter: m,
        find: function(t, e, n) {
            if (t && e) for (var i = 0, r = t.length; r > i; i++) if (e.call(n, t[i], i, t)) return t[i];
        },
        bind: v,
        curry: y,
        isArray: x,
        isFunction: _,
        isString: w,
        isObject: b,
        isBuiltInObject: S,
        isTypedArray: M,
        isDom: I,
        eqNaN: T,
        retrieve: C,
        retrieve2: D,
        retrieve3: A,
        slice: k,
        normalizeCssArray: P,
        assert: L,
        trim: O,
        setAsPrimitive: E,
        isPrimitive: B,
        createHashMap: z,
        concatArray: function(t, e) {
            for (var n = new t.constructor(t.length + e.length), i = 0; i < t.length; i++) n[i] = t[i];
            var r = t.length;
            for (i = 0; i < e.length; i++) n[i + r] = e[i];
            return n;
        },
        noop: R
    }), Ku = "undefined" == typeof Float32Array ? Array : Float32Array, $u = U, Qu = Y, Ju = Z, th = K, eh = (Object.freeze || Object)({
        create: F,
        copy: V,
        clone: H,
        set: function(t, e, n) {
            return t[0] = e, t[1] = n, t;
        },
        add: G,
        scaleAndAdd: W,
        sub: X,
        len: U,
        length: $u,
        lenSquare: Y,
        lengthSquare: Qu,
        mul: function(t, e, n) {
            return t[0] = e[0] * n[0], t[1] = e[1] * n[1], t;
        },
        div: function(t, e, n) {
            return t[0] = e[0] / n[0], t[1] = e[1] / n[1], t;
        },
        dot: function(t, e) {
            return t[0] * e[0] + t[1] * e[1];
        },
        scale: q,
        normalize: j,
        distance: Z,
        dist: Ju,
        distanceSquare: K,
        distSquare: th,
        negate: function(t, e) {
            return t[0] = -e[0], t[1] = -e[1], t;
        },
        lerp: function(t, e, n, i) {
            return t[0] = e[0] + i * (n[0] - e[0]), t[1] = e[1] + i * (n[1] - e[1]), t;
        },
        applyTransform: $,
        min: Q,
        max: J
    });
    tt.prototype = {
        constructor: tt,
        _dragStart: function(t) {
            for (var e = t.target; e && !e.draggable; ) e = e.parent;
            e && (this._draggingTarget = e, e.dragging = !0, this._x = t.offsetX, this._y = t.offsetY, 
            this.dispatchToElement(et(e, t), "dragstart", t.event));
        },
        _drag: function(t) {
            var e = this._draggingTarget;
            if (e) {
                var n = t.offsetX, i = t.offsetY, r = n - this._x, o = i - this._y;
                this._x = n, this._y = i, e.drift(r, o, t), this.dispatchToElement(et(e, t), "drag", t.event);
                var a = this.findHover(n, i, e).target, s = this._dropTarget;
                this._dropTarget = a, e !== a && (s && a !== s && this.dispatchToElement(et(s, t), "dragleave", t.event), 
                a && a !== s && this.dispatchToElement(et(a, t), "dragenter", t.event));
            }
        },
        _dragEnd: function(t) {
            var e = this._draggingTarget;
            e && (e.dragging = !1), this.dispatchToElement(et(e, t), "dragend", t.event), this._dropTarget && this.dispatchToElement(et(this._dropTarget, t), "drop", t.event), 
            this._draggingTarget = null, this._dropTarget = null;
        }
    };
    var nh = Array.prototype.slice, ih = function(t) {
        this._$handlers = {}, this._$eventProcessor = t;
    };
    ih.prototype = {
        constructor: ih,
        one: function(t, e, n, i) {
            return nt(this, t, e, n, i, !0);
        },
        on: function(t, e, n, i) {
            return nt(this, t, e, n, i, !1);
        },
        isSilent: function(t) {
            var e = this._$handlers;
            return !e[t] || !e[t].length;
        },
        off: function(t, e) {
            var n = this._$handlers;
            if (!t) return this._$handlers = {}, this;
            if (e) {
                if (n[t]) {
                    for (var i = [], r = 0, o = n[t].length; o > r; r++) n[t][r].h !== e && i.push(n[t][r]);
                    n[t] = i;
                }
                n[t] && 0 === n[t].length && delete n[t];
            } else delete n[t];
            return this;
        },
        trigger: function(t) {
            var e = this._$handlers[t], n = this._$eventProcessor;
            if (e) {
                var i = arguments, r = i.length;
                r > 3 && (i = nh.call(i, 1));
                for (var o = e.length, a = 0; o > a; ) {
                    var s = e[a];
                    if (n && n.filter && null != s.query && !n.filter(t, s.query)) a++; else {
                        switch (r) {
                          case 1:
                            s.h.call(s.ctx);
                            break;

                          case 2:
                            s.h.call(s.ctx, i[1]);
                            break;

                          case 3:
                            s.h.call(s.ctx, i[1], i[2]);
                            break;

                          default:
                            s.h.apply(s.ctx, i);
                        }
                        s.one ? (e.splice(a, 1), o--) : a++;
                    }
                }
            }
            return n && n.afterTrigger && n.afterTrigger(t), this;
        },
        triggerWithContext: function(t) {
            var e = this._$handlers[t], n = this._$eventProcessor;
            if (e) {
                var i = arguments, r = i.length;
                r > 4 && (i = nh.call(i, 1, i.length - 1));
                for (var o = i[i.length - 1], a = e.length, s = 0; a > s; ) {
                    var l = e[s];
                    if (n && n.filter && null != l.query && !n.filter(t, l.query)) s++; else {
                        switch (r) {
                          case 1:
                            l.h.call(o);
                            break;

                          case 2:
                            l.h.call(o, i[1]);
                            break;

                          case 3:
                            l.h.call(o, i[1], i[2]);
                            break;

                          default:
                            l.h.apply(o, i);
                        }
                        l.one ? (e.splice(s, 1), a--) : s++;
                    }
                }
            }
            return n && n.afterTrigger && n.afterTrigger(t), this;
        }
    };
    var rh = Math.log(2), oh = "___zrEVENTSAVED", ah = [], sh = "undefined" != typeof window && !!window.addEventListener, lh = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, uh = [], hh = sh ? function(t) {
        t.preventDefault(), t.stopPropagation(), t.cancelBubble = !0;
    } : function(t) {
        t.returnValue = !1, t.cancelBubble = !0;
    }, ch = function() {
        this._track = [];
    };
    ch.prototype = {
        constructor: ch,
        recognize: function(t, e, n) {
            return this._doTrack(t, e, n), this._recognize(t);
        },
        clear: function() {
            return this._track.length = 0, this;
        },
        _doTrack: function(t, e, n) {
            var i = t.touches;
            if (i) {
                for (var r = {
                    points: [],
                    touches: [],
                    target: e,
                    event: t
                }, o = 0, a = i.length; a > o; o++) {
                    var s = i[o], l = st(n, s, {});
                    r.points.push([ l.zrX, l.zrY ]), r.touches.push(s);
                }
                this._track.push(r);
            }
        },
        _recognize: function(t) {
            for (var e in dh) if (dh.hasOwnProperty(e)) {
                var n = dh[e](this._track, t);
                if (n) return n;
            }
        }
    };
    var dh = {
        pinch: function(t, e) {
            var n = t.length;
            if (n) {
                var i = (t[n - 1] || {}).points, r = (t[n - 2] || {}).points || i;
                if (r && r.length > 1 && i && i.length > 1) {
                    var o = dt(i) / dt(r);
                    !isFinite(o) && (o = 1), e.pinchScale = o;
                    var a = function(t) {
                        return [ (t[0][0] + t[1][0]) / 2, (t[0][1] + t[1][1]) / 2 ];
                    }(i);
                    return e.pinchX = a[0], e.pinchY = a[1], {
                        type: "pinch",
                        target: t[0].target,
                        event: e
                    };
                }
            }
        }
    }, fh = "silent";
    pt.prototype.dispose = function() {};
    var ph = [ "click", "dblclick", "mousewheel", "mouseout", "mouseup", "mousedown", "mousemove", "contextmenu" ], gh = function(t, e, n, i) {
        ih.call(this), this.storage = t, this.painter = e, this.painterRoot = i, n = n || new pt(), 
        this.proxy = null, this._hovered = {}, this._lastTouchMoment, this._lastX, this._lastY, 
        this._gestureMgr, tt.call(this), this.setHandlerProxy(n);
    };
    gh.prototype = {
        constructor: gh,
        setHandlerProxy: function(t) {
            this.proxy && this.proxy.dispose(), t && (f(ph, function(e) {
                t.on && t.on(e, this[e], this);
            }, this), t.handler = this), this.proxy = t;
        },
        mousemove: function(t) {
            var e = t.zrX, n = t.zrY, i = mt(this, e, n), r = this._hovered, o = r.target;
            o && !o.__zr && (o = (r = this.findHover(r.x, r.y)).target);
            var a = this._hovered = i ? {
                x: e,
                y: n
            } : this.findHover(e, n), s = a.target, l = this.proxy;
            l.setCursor && l.setCursor(s ? s.cursor : "default"), o && s !== o && this.dispatchToElement(r, "mouseout", t), 
            this.dispatchToElement(a, "mousemove", t), s && s !== o && this.dispatchToElement(a, "mouseover", t);
        },
        mouseout: function(t) {
            var e = t.zrEventControl, n = t.zrIsToLocalDOM;
            "only_globalout" !== e && this.dispatchToElement(this._hovered, "mouseout", t), 
            "no_globalout" !== e && !n && this.trigger("globalout", {
                type: "globalout",
                event: t
            });
        },
        resize: function() {
            this._hovered = {};
        },
        dispatch: function(t, e) {
            var n = this[t];
            n && n.call(this, e);
        },
        dispose: function() {
            this.proxy.dispose(), this.storage = this.proxy = this.painter = null;
        },
        setCursorStyle: function(t) {
            var e = this.proxy;
            e.setCursor && e.setCursor(t);
        },
        dispatchToElement: function(t, e, n) {
            var i = (t = t || {}).target;
            if (!i || !i.silent) {
                for (var r = "on" + e, o = function(t, e, n) {
                    return {
                        type: t,
                        event: n,
                        target: e.target,
                        topTarget: e.topTarget,
                        cancelBubble: !1,
                        offsetX: n.zrX,
                        offsetY: n.zrY,
                        gestureEvent: n.gestureEvent,
                        pinchX: n.pinchX,
                        pinchY: n.pinchY,
                        pinchScale: n.pinchScale,
                        wheelDelta: n.zrDelta,
                        zrByTouch: n.zrByTouch,
                        which: n.which,
                        stop: ft
                    };
                }(e, t, n); i && (i[r] && (o.cancelBubble = i[r].call(i, o)), i.trigger(e, o), i = i.parent, 
                !o.cancelBubble); ) ;
                o.cancelBubble || (this.trigger(e, o), this.painter && this.painter.eachOtherLayer(function(t) {
                    "function" == typeof t[r] && t[r].call(t, o), t.trigger && t.trigger(e, o);
                }));
            }
        },
        findHover: function(t, e, n) {
            for (var i = this.storage.getDisplayList(), r = {
                x: t,
                y: e
            }, o = i.length - 1; o >= 0; o--) {
                var a;
                if (i[o] !== n && !i[o].ignore && (a = gt(i[o], t, e)) && (!r.topTarget && (r.topTarget = i[o]), 
                a !== fh)) {
                    r.target = i[o];
                    break;
                }
            }
            return r;
        },
        processGesture: function(t, e) {
            this._gestureMgr || (this._gestureMgr = new ch());
            var n = this._gestureMgr;
            "start" === e && n.clear();
            var i = n.recognize(t, this.findHover(t.zrX, t.zrY, null).target, this.proxy.dom);
            if ("end" === e && n.clear(), i) {
                var r = i.type;
                t.gestureEvent = r, this.dispatchToElement({
                    target: i.target
                }, r, i.event);
            }
        }
    }, f([ "click", "mousedown", "mouseup", "mousewheel", "dblclick", "contextmenu" ], function(t) {
        gh.prototype[t] = function(e) {
            var n, i, r = e.zrX, o = e.zrY, a = mt(this, r, o);
            if ("mouseup" === t && a || (i = (n = this.findHover(r, o)).target), "mousedown" === t) this._downEl = i, 
            this._downPoint = [ e.zrX, e.zrY ], this._upEl = i; else if ("mouseup" === t) this._upEl = i; else if ("click" === t) {
                if (this._downEl !== this._upEl || !this._downPoint || Ju(this._downPoint, [ e.zrX, e.zrY ]) > 4) return;
                this._downPoint = null;
            }
            this.dispatchToElement(n, t, e);
        };
    }), c(gh, ih), c(gh, tt);
    var mh = "undefined" == typeof Float32Array ? Array : Float32Array, vh = (Object.freeze || Object)({
        create: vt,
        identity: yt,
        copy: xt,
        mul: _t,
        translate: wt,
        rotate: bt,
        scale: St,
        invert: Mt,
        clone: function(t) {
            var e = vt();
            return xt(e, t), e;
        }
    }), yh = yt, xh = 5e-5, _h = function(t) {
        (t = t || {}).position || (this.position = [ 0, 0 ]), null == t.rotation && (this.rotation = 0), 
        t.scale || (this.scale = [ 1, 1 ]), this.origin = this.origin || null;
    }, wh = _h.prototype;
    wh.transform = null, wh.needLocalTransform = function() {
        return It(this.rotation) || It(this.position[0]) || It(this.position[1]) || It(this.scale[0] - 1) || It(this.scale[1] - 1);
    };
    var bh = [];
    wh.updateTransform = function() {
        var t = this.parent, e = t && t.transform, n = this.needLocalTransform(), i = this.transform;
        if (n || e) {
            i = i || vt(), n ? this.getLocalTransform(i) : yh(i), e && (n ? _t(i, t.transform, i) : xt(i, t.transform)), 
            this.transform = i;
            var r = this.globalScaleRatio;
            if (null != r && 1 !== r) {
                this.getGlobalScale(bh);
                var o = bh[0] < 0 ? -1 : 1, a = bh[1] < 0 ? -1 : 1, s = ((bh[0] - o) * r + o) / bh[0] || 0, l = ((bh[1] - a) * r + a) / bh[1] || 0;
                i[0] *= s, i[1] *= s, i[2] *= l, i[3] *= l;
            }
            this.invTransform = this.invTransform || vt(), Mt(this.invTransform, i);
        } else i && yh(i);
    }, wh.getLocalTransform = function(t) {
        return _h.getLocalTransform(this, t);
    }, wh.setTransform = function(t) {
        var e = this.transform, n = t.dpr || 1;
        e ? t.setTransform(n * e[0], n * e[1], n * e[2], n * e[3], n * e[4], n * e[5]) : t.setTransform(n, 0, 0, n, 0, 0);
    }, wh.restoreTransform = function(t) {
        var e = t.dpr || 1;
        t.setTransform(e, 0, 0, e, 0, 0);
    };
    var Sh = [], Mh = vt();
    wh.setLocalTransform = function(t) {
        if (t) {
            var e = t[0] * t[0] + t[1] * t[1], n = t[2] * t[2] + t[3] * t[3], i = this.position, r = this.scale;
            It(e - 1) && (e = Math.sqrt(e)), It(n - 1) && (n = Math.sqrt(n)), t[0] < 0 && (e = -e), 
            t[3] < 0 && (n = -n), i[0] = t[4], i[1] = t[5], r[0] = e, r[1] = n, this.rotation = Math.atan2(-t[1] / n, t[0] / e);
        }
    }, wh.decomposeTransform = function() {
        if (this.transform) {
            var t = this.parent, e = this.transform;
            t && t.transform && (_t(Sh, t.invTransform, e), e = Sh);
            var n = this.origin;
            n && (n[0] || n[1]) && (Mh[4] = n[0], Mh[5] = n[1], _t(Sh, e, Mh), Sh[4] -= n[0], 
            Sh[5] -= n[1], e = Sh), this.setLocalTransform(e);
        }
    }, wh.getGlobalScale = function(t) {
        var e = this.transform;
        return t = t || [], e ? (t[0] = Math.sqrt(e[0] * e[0] + e[1] * e[1]), t[1] = Math.sqrt(e[2] * e[2] + e[3] * e[3]), 
        e[0] < 0 && (t[0] = -t[0]), e[3] < 0 && (t[1] = -t[1]), t) : (t[0] = 1, t[1] = 1, 
        t);
    }, wh.transformCoordToLocal = function(t, e) {
        var n = [ t, e ], i = this.invTransform;
        return i && $(n, n, i), n;
    }, wh.transformCoordToGlobal = function(t, e) {
        var n = [ t, e ], i = this.transform;
        return i && $(n, n, i), n;
    }, _h.getLocalTransform = function(t, e) {
        yh(e = e || []);
        var n = t.origin, i = t.scale || [ 1, 1 ], r = t.rotation || 0, o = t.position || [ 0, 0 ];
        return n && (e[4] -= n[0], e[5] -= n[1]), St(e, e, i), r && bt(e, e, r), n && (e[4] += n[0], 
        e[5] += n[1]), e[4] += o[0], e[5] += o[1], e;
    };
    var Ih = {
        linear: function(t) {
            return t;
        },
        quadraticIn: function(t) {
            return t * t;
        },
        quadraticOut: function(t) {
            return t * (2 - t);
        },
        quadraticInOut: function(t) {
            return (t *= 2) < 1 ? .5 * t * t : -.5 * (--t * (t - 2) - 1);
        },
        cubicIn: function(t) {
            return t * t * t;
        },
        cubicOut: function(t) {
            return --t * t * t + 1;
        },
        cubicInOut: function(t) {
            return (t *= 2) < 1 ? .5 * t * t * t : .5 * ((t -= 2) * t * t + 2);
        },
        quarticIn: function(t) {
            return t * t * t * t;
        },
        quarticOut: function(t) {
            return 1 - --t * t * t * t;
        },
        quarticInOut: function(t) {
            return (t *= 2) < 1 ? .5 * t * t * t * t : -.5 * ((t -= 2) * t * t * t - 2);
        },
        quinticIn: function(t) {
            return t * t * t * t * t;
        },
        quinticOut: function(t) {
            return --t * t * t * t * t + 1;
        },
        quinticInOut: function(t) {
            return (t *= 2) < 1 ? .5 * t * t * t * t * t : .5 * ((t -= 2) * t * t * t * t + 2);
        },
        sinusoidalIn: function(t) {
            return 1 - Math.cos(t * Math.PI / 2);
        },
        sinusoidalOut: function(t) {
            return Math.sin(t * Math.PI / 2);
        },
        sinusoidalInOut: function(t) {
            return .5 * (1 - Math.cos(Math.PI * t));
        },
        exponentialIn: function(t) {
            return 0 === t ? 0 : Math.pow(1024, t - 1);
        },
        exponentialOut: function(t) {
            return 1 === t ? 1 : 1 - Math.pow(2, -10 * t);
        },
        exponentialInOut: function(t) {
            return 0 === t ? 0 : 1 === t ? 1 : (t *= 2) < 1 ? .5 * Math.pow(1024, t - 1) : .5 * (2 - Math.pow(2, -10 * (t - 1)));
        },
        circularIn: function(t) {
            return 1 - Math.sqrt(1 - t * t);
        },
        circularOut: function(t) {
            return Math.sqrt(1 - --t * t);
        },
        circularInOut: function(t) {
            return (t *= 2) < 1 ? -.5 * (Math.sqrt(1 - t * t) - 1) : .5 * (Math.sqrt(1 - (t -= 2) * t) + 1);
        },
        elasticIn: function(t) {
            var e, n = .1;
            return 0 === t ? 0 : 1 === t ? 1 : (!n || 1 > n ? (n = 1, e = .1) : e = .4 * Math.asin(1 / n) / (2 * Math.PI), 
            -n * Math.pow(2, 10 * (t -= 1)) * Math.sin(2 * (t - e) * Math.PI / .4));
        },
        elasticOut: function(t) {
            var e, n = .1;
            return 0 === t ? 0 : 1 === t ? 1 : (!n || 1 > n ? (n = 1, e = .1) : e = .4 * Math.asin(1 / n) / (2 * Math.PI), 
            n * Math.pow(2, -10 * t) * Math.sin(2 * (t - e) * Math.PI / .4) + 1);
        },
        elasticInOut: function(t) {
            var e, n = .1, i = .4;
            return 0 === t ? 0 : 1 === t ? 1 : (!n || 1 > n ? (n = 1, e = .1) : e = i * Math.asin(1 / n) / (2 * Math.PI), 
            (t *= 2) < 1 ? -.5 * n * Math.pow(2, 10 * (t -= 1)) * Math.sin(2 * (t - e) * Math.PI / i) : n * Math.pow(2, -10 * (t -= 1)) * Math.sin(2 * (t - e) * Math.PI / i) * .5 + 1);
        },
        backIn: function(t) {
            var e = 1.70158;
            return t * t * ((e + 1) * t - e);
        },
        backOut: function(t) {
            var e = 1.70158;
            return --t * t * ((e + 1) * t + e) + 1;
        },
        backInOut: function(t) {
            var e = 2.5949095;
            return (t *= 2) < 1 ? .5 * t * t * ((e + 1) * t - e) : .5 * ((t -= 2) * t * ((e + 1) * t + e) + 2);
        },
        bounceIn: function(t) {
            return 1 - Ih.bounceOut(1 - t);
        },
        bounceOut: function(t) {
            return 1 / 2.75 > t ? 7.5625 * t * t : 2 / 2.75 > t ? 7.5625 * (t -= 1.5 / 2.75) * t + .75 : 2.5 / 2.75 > t ? 7.5625 * (t -= 2.25 / 2.75) * t + .9375 : 7.5625 * (t -= 2.625 / 2.75) * t + .984375;
        },
        bounceInOut: function(t) {
            return .5 > t ? .5 * Ih.bounceIn(2 * t) : .5 * Ih.bounceOut(2 * t - 1) + .5;
        }
    };
    Tt.prototype = {
        constructor: Tt,
        step: function(t, e) {
            if (this._initialized || (this._startTime = t + this._delay, this._initialized = !0), 
            this._paused) this._pausedTime += e; else {
                var n = (t - this._startTime - this._pausedTime) / this._life;
                if (!(0 > n)) {
                    n = Math.min(n, 1);
                    var i = this.easing, r = "string" == typeof i ? Ih[i] : i, o = "function" == typeof r ? r(n) : n;
                    return this.fire("frame", o), 1 === n ? this.loop ? (this.restart(t), "restart") : (this._needsRemove = !0, 
                    "destroy") : null;
                }
            }
        },
        restart: function(t) {
            var e = (t - this._startTime - this._pausedTime) % this._life;
            this._startTime = t - e + this.gap, this._pausedTime = 0, this._needsRemove = !1;
        },
        fire: function(t, e) {
            this[t = "on" + t] && this[t](this._target, e);
        },
        pause: function() {
            this._paused = !0;
        },
        resume: function() {
            this._paused = !1;
        }
    };
    var Th = function() {
        this.head = null, this.tail = null, this._len = 0;
    }, Ch = Th.prototype;
    Ch.insert = function(t) {
        var e = new Dh(t);
        return this.insertEntry(e), e;
    }, Ch.insertEntry = function(t) {
        this.head ? (this.tail.next = t, t.prev = this.tail, t.next = null, this.tail = t) : this.head = this.tail = t, 
        this._len++;
    }, Ch.remove = function(t) {
        var e = t.prev, n = t.next;
        e ? e.next = n : this.head = n, n ? n.prev = e : this.tail = e, t.next = t.prev = null, 
        this._len--;
    }, Ch.len = function() {
        return this._len;
    }, Ch.clear = function() {
        this.head = this.tail = null, this._len = 0;
    };
    var Dh = function(t) {
        this.value = t, this.next, this.prev;
    }, Ah = function(t) {
        this._list = new Th(), this._map = {}, this._maxSize = t || 10, this._lastRemovedEntry = null;
    }, kh = Ah.prototype;
    kh.put = function(t, e) {
        var n = this._list, i = this._map, r = null;
        if (null == i[t]) {
            var o = n.len(), a = this._lastRemovedEntry;
            if (o >= this._maxSize && o > 0) {
                var s = n.head;
                n.remove(s), delete i[s.key], r = s.value, this._lastRemovedEntry = s;
            }
            a ? a.value = e : a = new Dh(e), a.key = t, n.insertEntry(a), i[t] = a;
        }
        return r;
    }, kh.get = function(t) {
        var e = this._map[t], n = this._list;
        return null != e ? (e !== n.tail && (n.remove(e), n.insertEntry(e)), e.value) : void 0;
    }, kh.clear = function() {
        this._list.clear(), this._map = {};
    };
    var Ph = {
        transparent: [ 0, 0, 0, 0 ],
        aliceblue: [ 240, 248, 255, 1 ],
        antiquewhite: [ 250, 235, 215, 1 ],
        aqua: [ 0, 255, 255, 1 ],
        aquamarine: [ 127, 255, 212, 1 ],
        azure: [ 240, 255, 255, 1 ],
        beige: [ 245, 245, 220, 1 ],
        bisque: [ 255, 228, 196, 1 ],
        black: [ 0, 0, 0, 1 ],
        blanchedalmond: [ 255, 235, 205, 1 ],
        blue: [ 0, 0, 255, 1 ],
        blueviolet: [ 138, 43, 226, 1 ],
        brown: [ 165, 42, 42, 1 ],
        burlywood: [ 222, 184, 135, 1 ],
        cadetblue: [ 95, 158, 160, 1 ],
        chartreuse: [ 127, 255, 0, 1 ],
        chocolate: [ 210, 105, 30, 1 ],
        coral: [ 255, 127, 80, 1 ],
        cornflowerblue: [ 100, 149, 237, 1 ],
        cornsilk: [ 255, 248, 220, 1 ],
        crimson: [ 220, 20, 60, 1 ],
        cyan: [ 0, 255, 255, 1 ],
        darkblue: [ 0, 0, 139, 1 ],
        darkcyan: [ 0, 139, 139, 1 ],
        darkgoldenrod: [ 184, 134, 11, 1 ],
        darkgray: [ 169, 169, 169, 1 ],
        darkgreen: [ 0, 100, 0, 1 ],
        darkgrey: [ 169, 169, 169, 1 ],
        darkkhaki: [ 189, 183, 107, 1 ],
        darkmagenta: [ 139, 0, 139, 1 ],
        darkolivegreen: [ 85, 107, 47, 1 ],
        darkorange: [ 255, 140, 0, 1 ],
        darkorchid: [ 153, 50, 204, 1 ],
        darkred: [ 139, 0, 0, 1 ],
        darksalmon: [ 233, 150, 122, 1 ],
        darkseagreen: [ 143, 188, 143, 1 ],
        darkslateblue: [ 72, 61, 139, 1 ],
        darkslategray: [ 47, 79, 79, 1 ],
        darkslategrey: [ 47, 79, 79, 1 ],
        darkturquoise: [ 0, 206, 209, 1 ],
        darkviolet: [ 148, 0, 211, 1 ],
        deeppink: [ 255, 20, 147, 1 ],
        deepskyblue: [ 0, 191, 255, 1 ],
        dimgray: [ 105, 105, 105, 1 ],
        dimgrey: [ 105, 105, 105, 1 ],
        dodgerblue: [ 30, 144, 255, 1 ],
        firebrick: [ 178, 34, 34, 1 ],
        floralwhite: [ 255, 250, 240, 1 ],
        forestgreen: [ 34, 139, 34, 1 ],
        fuchsia: [ 255, 0, 255, 1 ],
        gainsboro: [ 220, 220, 220, 1 ],
        ghostwhite: [ 248, 248, 255, 1 ],
        gold: [ 255, 215, 0, 1 ],
        goldenrod: [ 218, 165, 32, 1 ],
        gray: [ 128, 128, 128, 1 ],
        green: [ 0, 128, 0, 1 ],
        greenyellow: [ 173, 255, 47, 1 ],
        grey: [ 128, 128, 128, 1 ],
        honeydew: [ 240, 255, 240, 1 ],
        hotpink: [ 255, 105, 180, 1 ],
        indianred: [ 205, 92, 92, 1 ],
        indigo: [ 75, 0, 130, 1 ],
        ivory: [ 255, 255, 240, 1 ],
        khaki: [ 240, 230, 140, 1 ],
        lavender: [ 230, 230, 250, 1 ],
        lavenderblush: [ 255, 240, 245, 1 ],
        lawngreen: [ 124, 252, 0, 1 ],
        lemonchiffon: [ 255, 250, 205, 1 ],
        lightblue: [ 173, 216, 230, 1 ],
        lightcoral: [ 240, 128, 128, 1 ],
        lightcyan: [ 224, 255, 255, 1 ],
        lightgoldenrodyellow: [ 250, 250, 210, 1 ],
        lightgray: [ 211, 211, 211, 1 ],
        lightgreen: [ 144, 238, 144, 1 ],
        lightgrey: [ 211, 211, 211, 1 ],
        lightpink: [ 255, 182, 193, 1 ],
        lightsalmon: [ 255, 160, 122, 1 ],
        lightseagreen: [ 32, 178, 170, 1 ],
        lightskyblue: [ 135, 206, 250, 1 ],
        lightslategray: [ 119, 136, 153, 1 ],
        lightslategrey: [ 119, 136, 153, 1 ],
        lightsteelblue: [ 176, 196, 222, 1 ],
        lightyellow: [ 255, 255, 224, 1 ],
        lime: [ 0, 255, 0, 1 ],
        limegreen: [ 50, 205, 50, 1 ],
        linen: [ 250, 240, 230, 1 ],
        magenta: [ 255, 0, 255, 1 ],
        maroon: [ 128, 0, 0, 1 ],
        mediumaquamarine: [ 102, 205, 170, 1 ],
        mediumblue: [ 0, 0, 205, 1 ],
        mediumorchid: [ 186, 85, 211, 1 ],
        mediumpurple: [ 147, 112, 219, 1 ],
        mediumseagreen: [ 60, 179, 113, 1 ],
        mediumslateblue: [ 123, 104, 238, 1 ],
        mediumspringgreen: [ 0, 250, 154, 1 ],
        mediumturquoise: [ 72, 209, 204, 1 ],
        mediumvioletred: [ 199, 21, 133, 1 ],
        midnightblue: [ 25, 25, 112, 1 ],
        mintcream: [ 245, 255, 250, 1 ],
        mistyrose: [ 255, 228, 225, 1 ],
        moccasin: [ 255, 228, 181, 1 ],
        navajowhite: [ 255, 222, 173, 1 ],
        navy: [ 0, 0, 128, 1 ],
        oldlace: [ 253, 245, 230, 1 ],
        olive: [ 128, 128, 0, 1 ],
        olivedrab: [ 107, 142, 35, 1 ],
        orange: [ 255, 165, 0, 1 ],
        orangered: [ 255, 69, 0, 1 ],
        orchid: [ 218, 112, 214, 1 ],
        palegoldenrod: [ 238, 232, 170, 1 ],
        palegreen: [ 152, 251, 152, 1 ],
        paleturquoise: [ 175, 238, 238, 1 ],
        palevioletred: [ 219, 112, 147, 1 ],
        papayawhip: [ 255, 239, 213, 1 ],
        peachpuff: [ 255, 218, 185, 1 ],
        peru: [ 205, 133, 63, 1 ],
        pink: [ 255, 192, 203, 1 ],
        plum: [ 221, 160, 221, 1 ],
        powderblue: [ 176, 224, 230, 1 ],
        purple: [ 128, 0, 128, 1 ],
        red: [ 255, 0, 0, 1 ],
        rosybrown: [ 188, 143, 143, 1 ],
        royalblue: [ 65, 105, 225, 1 ],
        saddlebrown: [ 139, 69, 19, 1 ],
        salmon: [ 250, 128, 114, 1 ],
        sandybrown: [ 244, 164, 96, 1 ],
        seagreen: [ 46, 139, 87, 1 ],
        seashell: [ 255, 245, 238, 1 ],
        sienna: [ 160, 82, 45, 1 ],
        silver: [ 192, 192, 192, 1 ],
        skyblue: [ 135, 206, 235, 1 ],
        slateblue: [ 106, 90, 205, 1 ],
        slategray: [ 112, 128, 144, 1 ],
        slategrey: [ 112, 128, 144, 1 ],
        snow: [ 255, 250, 250, 1 ],
        springgreen: [ 0, 255, 127, 1 ],
        steelblue: [ 70, 130, 180, 1 ],
        tan: [ 210, 180, 140, 1 ],
        teal: [ 0, 128, 128, 1 ],
        thistle: [ 216, 191, 216, 1 ],
        tomato: [ 255, 99, 71, 1 ],
        turquoise: [ 64, 224, 208, 1 ],
        violet: [ 238, 130, 238, 1 ],
        wheat: [ 245, 222, 179, 1 ],
        white: [ 255, 255, 255, 1 ],
        whitesmoke: [ 245, 245, 245, 1 ],
        yellow: [ 255, 255, 0, 1 ],
        yellowgreen: [ 154, 205, 50, 1 ]
    }, Lh = new Ah(20), Oh = null, Eh = Vt, Bh = Ht, Nh = (Object.freeze || Object)({
        parse: Nt,
        lift: Rt,
        toHex: Ft,
        fastLerp: Vt,
        fastMapToColor: Eh,
        lerp: Ht,
        mapToColor: Bh,
        modifyHSL: function(t, e, n, i) {
            return (t = Nt(t)) ? (t = function(t) {
                if (t) {
                    var e, n, i = t[0] / 255, r = t[1] / 255, o = t[2] / 255, a = Math.min(i, r, o), s = Math.max(i, r, o), l = s - a, u = (s + a) / 2;
                    if (0 === l) e = 0, n = 0; else {
                        n = .5 > u ? l / (s + a) : l / (2 - s - a);
                        var h = ((s - i) / 6 + l / 2) / l, c = ((s - r) / 6 + l / 2) / l, d = ((s - o) / 6 + l / 2) / l;
                        i === s ? e = d - c : r === s ? e = 1 / 3 + h - d : o === s && (e = 2 / 3 + c - h), 
                        0 > e && (e += 1), e > 1 && (e -= 1);
                    }
                    var f = [ 360 * e, n, u ];
                    return null != t[3] && f.push(t[3]), f;
                }
            }(t), null != e && (t[0] = function(t) {
                return 0 > (t = Math.round(t)) ? 0 : t > 360 ? 360 : t;
            }(e)), null != n && (t[1] = kt(n)), null != i && (t[2] = kt(i)), Wt(zt(t), "rgba")) : void 0;
        },
        modifyAlpha: Gt,
        stringify: Wt
    }), zh = Array.prototype.slice, Rh = function(t, e, n, i) {
        this._tracks = {}, this._target = t, this._loop = e || !1, this._getter = n || Xt, 
        this._setter = i || Ut, this._clipCount = 0, this._delay = 0, this._doneList = [], 
        this._onframeList = [], this._clipList = [];
    };
    Rh.prototype = {
        when: function(t, e) {
            var n = this._tracks;
            for (var i in e) if (e.hasOwnProperty(i)) {
                if (!n[i]) {
                    n[i] = [];
                    var r = this._getter(this._target, i);
                    if (null == r) continue;
                    0 !== t && n[i].push({
                        time: 0,
                        value: Jt(r)
                    });
                }
                n[i].push({
                    time: t,
                    value: e[i]
                });
            }
            return this;
        },
        during: function(t) {
            return this._onframeList.push(t), this;
        },
        pause: function() {
            for (var t = 0; t < this._clipList.length; t++) this._clipList[t].pause();
            this._paused = !0;
        },
        resume: function() {
            for (var t = 0; t < this._clipList.length; t++) this._clipList[t].resume();
            this._paused = !1;
        },
        isPaused: function() {
            return !!this._paused;
        },
        _doneCallback: function() {
            this._tracks = {}, this._clipList.length = 0;
            for (var t = this._doneList, e = t.length, n = 0; e > n; n++) t[n].call(this);
        },
        start: function(t, e) {
            var n, i = this, r = 0, o = function() {
                --r || i._doneCallback();
            };
            for (var a in this._tracks) if (this._tracks.hasOwnProperty(a)) {
                var s = ee(this, t, o, this._tracks[a], a, e);
                s && (this._clipList.push(s), r++, this.animation && this.animation.addClip(s), 
                n = s);
            }
            if (n) {
                var l = n.onframe;
                n.onframe = function(t, e) {
                    l(t, e);
                    for (var n = 0; n < i._onframeList.length; n++) i._onframeList[n](t, e);
                };
            }
            return r || this._doneCallback(), this;
        },
        stop: function(t) {
            for (var e = this._clipList, n = this.animation, i = 0; i < e.length; i++) {
                var r = e[i];
                t && r.onframe(this._target, 1), n && n.removeClip(r);
            }
            e.length = 0;
        },
        delay: function(t) {
            return this._delay = t, this;
        },
        done: function(t) {
            return t && this._doneList.push(t), this;
        },
        getClips: function() {
            return this._clipList;
        }
    };
    var Fh = 1;
    "undefined" != typeof window && (Fh = Math.max(window.devicePixelRatio || 1, 1));
    var Vh = Fh, Hh = function() {}, Gh = Hh, Wh = function() {
        this.animators = [];
    };
    Wh.prototype = {
        constructor: Wh,
        animate: function(t, e) {
            var n, i = !1, r = this, o = this.__zr;
            if (t) {
                var a = t.split("."), s = r;
                i = "shape" === a[0];
                for (var l = 0, h = a.length; h > l; l++) s && (s = s[a[l]]);
                s && (n = s);
            } else n = r;
            if (n) {
                var c = r.animators, d = new Rh(n, e);
                return d.during(function() {
                    r.dirty(i);
                }).done(function() {
                    c.splice(u(c, d), 1);
                }), c.push(d), o && o.animation.addAnimator(d), d;
            }
            Gh('Property "' + t + '" is not existed in element ' + r.id);
        },
        stopAnimation: function(t) {
            for (var e = this.animators, n = e.length, i = 0; n > i; i++) e[i].stop(t);
            return e.length = 0, this;
        },
        animateTo: function(t, e, n, i, r, o) {
            ne(this, t, e, n, i, r, o);
        },
        animateFrom: function(t, e, n, i, r, o) {
            ne(this, t, e, n, i, r, o, !0);
        }
    };
    var Xh = function(t) {
        _h.call(this, t), ih.call(this, t), Wh.call(this, t), this.id = t.id || Eu();
    };
    Xh.prototype = {
        type: "element",
        name: "",
        __zr: null,
        ignore: !1,
        clipPath: null,
        isGroup: !1,
        drift: function(t, e) {
            switch (this.draggable) {
              case "horizontal":
                e = 0;
                break;

              case "vertical":
                t = 0;
            }
            var n = this.transform;
            n || (n = this.transform = [ 1, 0, 0, 1, 0, 0 ]), n[4] += t, n[5] += e, this.decomposeTransform(), 
            this.dirty(!1);
        },
        beforeUpdate: function() {},
        afterUpdate: function() {},
        update: function() {
            this.updateTransform();
        },
        traverse: function() {},
        attrKV: function(t, e) {
            if ("position" === t || "scale" === t || "origin" === t) {
                if (e) {
                    var n = this[t];
                    n || (n = this[t] = []), n[0] = e[0], n[1] = e[1];
                }
            } else this[t] = e;
        },
        hide: function() {
            this.ignore = !0, this.__zr && this.__zr.refresh();
        },
        show: function() {
            this.ignore = !1, this.__zr && this.__zr.refresh();
        },
        attr: function(t, e) {
            if ("string" == typeof t) this.attrKV(t, e); else if (b(t)) for (var n in t) t.hasOwnProperty(n) && this.attrKV(n, t[n]);
            return this.dirty(!1), this;
        },
        setClipPath: function(t) {
            var e = this.__zr;
            e && t.addSelfToZr(e), this.clipPath && this.clipPath !== t && this.removeClipPath(), 
            this.clipPath = t, t.__zr = e, t.__clipTarget = this, this.dirty(!1);
        },
        removeClipPath: function() {
            var t = this.clipPath;
            t && (t.__zr && t.removeSelfFromZr(t.__zr), t.__zr = null, t.__clipTarget = null, 
            this.clipPath = null, this.dirty(!1));
        },
        addSelfToZr: function(t) {
            this.__zr = t;
            var e = this.animators;
            if (e) for (var n = 0; n < e.length; n++) t.animation.addAnimator(e[n]);
            this.clipPath && this.clipPath.addSelfToZr(t);
        },
        removeSelfFromZr: function(t) {
            this.__zr = null;
            var e = this.animators;
            if (e) for (var n = 0; n < e.length; n++) t.animation.removeAnimator(e[n]);
            this.clipPath && this.clipPath.removeSelfFromZr(t);
        }
    }, c(Xh, Wh), c(Xh, _h), c(Xh, ih);
    var Uh = $, Yh = Math.min, qh = Math.max;
    re.prototype = {
        constructor: re,
        union: function(t) {
            var e = Yh(t.x, this.x), n = Yh(t.y, this.y);
            this.width = qh(t.x + t.width, this.x + this.width) - e, this.height = qh(t.y + t.height, this.y + this.height) - n, 
            this.x = e, this.y = n;
        },
        applyTransform: function() {
            var t = [], e = [], n = [], i = [];
            return function(r) {
                if (r) {
                    t[0] = n[0] = this.x, t[1] = i[1] = this.y, e[0] = i[0] = this.x + this.width, e[1] = n[1] = this.y + this.height, 
                    Uh(t, t, r), Uh(e, e, r), Uh(n, n, r), Uh(i, i, r), this.x = Yh(t[0], e[0], n[0], i[0]), 
                    this.y = Yh(t[1], e[1], n[1], i[1]);
                    var o = qh(t[0], e[0], n[0], i[0]), a = qh(t[1], e[1], n[1], i[1]);
                    this.width = o - this.x, this.height = a - this.y;
                }
            };
        }(),
        calculateTransform: function(t) {
            var e = this, n = t.width / e.width, i = t.height / e.height, r = vt();
            return wt(r, r, [ -e.x, -e.y ]), St(r, r, [ n, i ]), wt(r, r, [ t.x, t.y ]), r;
        },
        intersect: function(t) {
            if (!t) return !1;
            t instanceof re || (t = re.create(t));
            var e = this, n = e.x, i = e.x + e.width, r = e.y, o = e.y + e.height, a = t.x, s = t.x + t.width, l = t.y, u = t.y + t.height;
            return !(a > i || n > s || l > o || r > u);
        },
        contain: function(t, e) {
            var n = this;
            return t >= n.x && t <= n.x + n.width && e >= n.y && e <= n.y + n.height;
        },
        clone: function() {
            return new re(this.x, this.y, this.width, this.height);
        },
        copy: function(t) {
            this.x = t.x, this.y = t.y, this.width = t.width, this.height = t.height;
        },
        plain: function() {
            return {
                x: this.x,
                y: this.y,
                width: this.width,
                height: this.height
            };
        }
    }, re.create = function(t) {
        return new re(t.x, t.y, t.width, t.height);
    };
    var jh = function(t) {
        for (var e in t = t || {}, Xh.call(this, t), t) t.hasOwnProperty(e) && (this[e] = t[e]);
        this._children = [], this.__storage = null, this.__dirty = !0;
    };
    jh.prototype = {
        constructor: jh,
        isGroup: !0,
        type: "group",
        silent: !1,
        children: function() {
            return this._children.slice();
        },
        childAt: function(t) {
            return this._children[t];
        },
        childOfName: function(t) {
            for (var e = this._children, n = 0; n < e.length; n++) if (e[n].name === t) return e[n];
        },
        childCount: function() {
            return this._children.length;
        },
        add: function(t) {
            return t && t !== this && t.parent !== this && (this._children.push(t), this._doAdd(t)), 
            this;
        },
        addBefore: function(t, e) {
            if (t && t !== this && t.parent !== this && e && e.parent === this) {
                var n = this._children, i = n.indexOf(e);
                i >= 0 && (n.splice(i, 0, t), this._doAdd(t));
            }
            return this;
        },
        _doAdd: function(t) {
            t.parent && t.parent.remove(t), t.parent = this;
            var e = this.__storage, n = this.__zr;
            e && e !== t.__storage && (e.addToStorage(t), t instanceof jh && t.addChildrenToStorage(e)), 
            n && n.refresh();
        },
        remove: function(t) {
            var e = this.__zr, n = this.__storage, i = this._children, r = u(i, t);
            return 0 > r || (i.splice(r, 1), t.parent = null, n && (n.delFromStorage(t), t instanceof jh && t.delChildrenFromStorage(n)), 
            e && e.refresh()), this;
        },
        removeAll: function() {
            var t, e, n = this._children, i = this.__storage;
            for (e = 0; e < n.length; e++) t = n[e], i && (i.delFromStorage(t), t instanceof jh && t.delChildrenFromStorage(i)), 
            t.parent = null;
            return n.length = 0, this;
        },
        eachChild: function(t, e) {
            for (var n = this._children, i = 0; i < n.length; i++) {
                var r = n[i];
                t.call(e, r, i);
            }
            return this;
        },
        traverse: function(t, e) {
            for (var n = 0; n < this._children.length; n++) {
                var i = this._children[n];
                t.call(e, i), "group" === i.type && i.traverse(t, e);
            }
            return this;
        },
        addChildrenToStorage: function(t) {
            for (var e = 0; e < this._children.length; e++) {
                var n = this._children[e];
                t.addToStorage(n), n instanceof jh && n.addChildrenToStorage(t);
            }
        },
        delChildrenFromStorage: function(t) {
            for (var e = 0; e < this._children.length; e++) {
                var n = this._children[e];
                t.delFromStorage(n), n instanceof jh && n.delChildrenFromStorage(t);
            }
        },
        dirty: function() {
            return this.__dirty = !0, this.__zr && this.__zr.refresh(), this;
        },
        getBoundingRect: function(t) {
            for (var e = null, n = new re(0, 0, 0, 0), i = t || this._children, r = [], o = 0; o < i.length; o++) {
                var a = i[o];
                if (!a.ignore && !a.invisible) {
                    var s = a.getBoundingRect(), l = a.getLocalTransform(r);
                    l ? (n.copy(s), n.applyTransform(l), (e = e || n.clone()).union(n)) : (e = e || s.clone()).union(s);
                }
            }
            return e || n;
        }
    }, h(jh, Xh);
    var Zh = 32, Kh = 7, $h = function() {
        this._roots = [], this._displayList = [], this._displayListLen = 0;
    };
    $h.prototype = {
        constructor: $h,
        traverse: function(t, e) {
            for (var n = 0; n < this._roots.length; n++) this._roots[n].traverse(t, e);
        },
        getDisplayList: function(t, e) {
            return e = e || !1, t && this.updateDisplayList(e), this._displayList;
        },
        updateDisplayList: function(t) {
            this._displayListLen = 0;
            for (var e = this._roots, n = this._displayList, i = 0, r = e.length; r > i; i++) this._updateAndAddDisplayable(e[i], null, t);
            n.length = this._displayListLen, Bu.canvasSupported && he(n, ce);
        },
        _updateAndAddDisplayable: function(t, e, n) {
            if (!t.ignore || n) {
                t.beforeUpdate(), t.__dirty && t.update(), t.afterUpdate();
                var i = t.clipPath;
                if (i) {
                    e = e ? e.slice() : [];
                    for (var r = i, o = t; r; ) r.parent = o, r.updateTransform(), e.push(r), o = r, 
                    r = r.clipPath;
                }
                if (t.isGroup) {
                    for (var a = t._children, s = 0; s < a.length; s++) {
                        var l = a[s];
                        t.__dirty && (l.__dirty = !0), this._updateAndAddDisplayable(l, e, n);
                    }
                    t.__dirty = !1;
                } else t.__clipPaths = e, this._displayList[this._displayListLen++] = t;
            }
        },
        addRoot: function(t) {
            t.__storage !== this && (t instanceof jh && t.addChildrenToStorage(this), this.addToStorage(t), 
            this._roots.push(t));
        },
        delRoot: function(t) {
            if (null == t) {
                for (var e = 0; e < this._roots.length; e++) {
                    var n = this._roots[e];
                    n instanceof jh && n.delChildrenFromStorage(this);
                }
                return this._roots = [], this._displayList = [], void (this._displayListLen = 0);
            }
            if (t instanceof Array) {
                e = 0;
                for (var i = t.length; i > e; e++) this.delRoot(t[e]);
            } else {
                var r = u(this._roots, t);
                r >= 0 && (this.delFromStorage(t), this._roots.splice(r, 1), t instanceof jh && t.delChildrenFromStorage(this));
            }
        },
        addToStorage: function(t) {
            return t && (t.__storage = this, t.dirty(!1)), this;
        },
        delFromStorage: function(t) {
            return t && (t.__storage = null), this;
        },
        dispose: function() {
            this._renderList = this._roots = null;
        },
        displayableSortFunc: ce
    };
    var Qh = {
        shadowBlur: 1,
        shadowOffsetX: 1,
        shadowOffsetY: 1,
        textShadowBlur: 1,
        textShadowOffsetX: 1,
        textShadowOffsetY: 1,
        textBoxShadowBlur: 1,
        textBoxShadowOffsetX: 1,
        textBoxShadowOffsetY: 1
    }, Jh = function(t, e, n) {
        return Qh.hasOwnProperty(e) ? n *= t.dpr : n;
    }, tc = {
        NONE: 0,
        STYLE_BIND: 1,
        PLAIN_TEXT: 2
    }, ec = 9, nc = [ [ "shadowBlur", 0 ], [ "shadowOffsetX", 0 ], [ "shadowOffsetY", 0 ], [ "shadowColor", "#000" ], [ "lineCap", "butt" ], [ "lineJoin", "miter" ], [ "miterLimit", 10 ] ], ic = function(t) {
        this.extendFrom(t, !1);
    };
    ic.prototype = {
        constructor: ic,
        fill: "#000",
        stroke: null,
        opacity: 1,
        fillOpacity: null,
        strokeOpacity: null,
        lineDash: null,
        lineDashOffset: 0,
        shadowBlur: 0,
        shadowOffsetX: 0,
        shadowOffsetY: 0,
        lineWidth: 1,
        strokeNoScale: !1,
        text: null,
        font: null,
        textFont: null,
        fontStyle: null,
        fontWeight: null,
        fontSize: null,
        fontFamily: null,
        textTag: null,
        textFill: "#000",
        textStroke: null,
        textWidth: null,
        textHeight: null,
        textStrokeWidth: 0,
        textLineHeight: null,
        textPosition: "inside",
        textRect: null,
        textOffset: null,
        textAlign: null,
        textVerticalAlign: null,
        textDistance: 5,
        textShadowColor: "transparent",
        textShadowBlur: 0,
        textShadowOffsetX: 0,
        textShadowOffsetY: 0,
        textBoxShadowColor: "transparent",
        textBoxShadowBlur: 0,
        textBoxShadowOffsetX: 0,
        textBoxShadowOffsetY: 0,
        transformText: !1,
        textRotation: 0,
        textOrigin: null,
        textBackgroundColor: null,
        textBorderColor: null,
        textBorderWidth: 0,
        textBorderRadius: 0,
        textPadding: null,
        rich: null,
        truncate: null,
        blend: null,
        bind: function(t, e, n) {
            var i = this, r = n && n.style, o = !r || t.__attrCachedBy !== tc.STYLE_BIND;
            t.__attrCachedBy = tc.STYLE_BIND;
            for (var a = 0; a < nc.length; a++) {
                var s = nc[a], l = s[0];
                (o || i[l] !== r[l]) && (t[l] = Jh(t, l, i[l] || s[1]));
            }
            if ((o || i.fill !== r.fill) && (t.fillStyle = i.fill), (o || i.stroke !== r.stroke) && (t.strokeStyle = i.stroke), 
            (o || i.opacity !== r.opacity) && (t.globalAlpha = null == i.opacity ? 1 : i.opacity), 
            (o || i.blend !== r.blend) && (t.globalCompositeOperation = i.blend || "source-over"), 
            this.hasStroke()) {
                var u = i.lineWidth;
                t.lineWidth = u / (this.strokeNoScale && e && e.getLineScale ? e.getLineScale() : 1);
            }
        },
        hasFill: function() {
            var t = this.fill;
            return null != t && "none" !== t;
        },
        hasStroke: function() {
            var t = this.stroke;
            return null != t && "none" !== t && this.lineWidth > 0;
        },
        extendFrom: function(t, e) {
            if (t) for (var n in t) !t.hasOwnProperty(n) || !0 !== e && (!1 === e ? this.hasOwnProperty(n) : null == t[n]) || (this[n] = t[n]);
        },
        set: function(t, e) {
            "string" == typeof t ? this[t] = e : this.extendFrom(t, !0);
        },
        clone: function() {
            var t = new this.constructor();
            return t.extendFrom(this, !0), t;
        },
        getGradient: function(t, e, n) {
            for (var i = ("radial" === e.type ? fe : de)(t, e, n), r = e.colorStops, o = 0; o < r.length; o++) i.addColorStop(r[o].offset, r[o].color);
            return i;
        }
    };
    for (var rc = ic.prototype, oc = 0; oc < nc.length; oc++) {
        var ac = nc[oc];
        ac[0] in rc || (rc[ac[0]] = ac[1]);
    }
    ic.getGradient = rc.getGradient;
    var sc = function(t, e) {
        this.image = t, this.repeat = e, this.type = "pattern";
    };
    sc.prototype.getCanvasPattern = function(t) {
        return t.createPattern(this.image, this.repeat || "repeat");
    };
    var lc = function(t, e, n) {
        var i;
        n = n || Vh, "string" == typeof t ? i = ge(t, e, n) : b(t) && (t = (i = t).id), 
        this.id = t, this.dom = i;
        var r = i.style;
        r && (i.onselectstart = pe, r["-webkit-user-select"] = "none", r["user-select"] = "none", 
        r["-webkit-touch-callout"] = "none", r["-webkit-tap-highlight-color"] = "rgba(0,0,0,0)", 
        r.padding = 0, r.margin = 0, r["border-width"] = 0), this.domBack = null, this.ctxBack = null, 
        this.painter = e, this.config = null, this.clearColor = 0, this.motionBlur = !1, 
        this.lastFrameAlpha = .7, this.dpr = n;
    };
    lc.prototype = {
        constructor: lc,
        __dirty: !0,
        __used: !1,
        __drawIndex: 0,
        __startIndex: 0,
        __endIndex: 0,
        incremental: !1,
        getElementCount: function() {
            return this.__endIndex - this.__startIndex;
        },
        initContext: function() {
            this.ctx = this.dom.getContext("2d"), this.ctx.dpr = this.dpr;
        },
        createBackBuffer: function() {
            var t = this.dpr;
            this.domBack = ge("back-" + this.id, this.painter, t), this.ctxBack = this.domBack.getContext("2d"), 
            1 !== t && this.ctxBack.scale(t, t);
        },
        resize: function(t, e) {
            var n = this.dpr, i = this.dom, r = i.style, o = this.domBack;
            r && (r.width = t + "px", r.height = e + "px"), i.width = t * n, i.height = e * n, 
            o && (o.width = t * n, o.height = e * n, 1 !== n && this.ctxBack.scale(n, n));
        },
        clear: function(t, e) {
            var n, i = this.dom, r = this.ctx, o = i.width, a = i.height, s = (e = e || this.clearColor, 
            this.motionBlur && !t), l = this.lastFrameAlpha, u = this.dpr;
            (s && (this.domBack || this.createBackBuffer(), this.ctxBack.globalCompositeOperation = "copy", 
            this.ctxBack.drawImage(i, 0, 0, o / u, a / u)), r.clearRect(0, 0, o, a), e && "transparent" !== e) && (e.colorStops ? (n = e.__canvasGradient || ic.getGradient(r, e, {
                x: 0,
                y: 0,
                width: o,
                height: a
            }), e.__canvasGradient = n) : e.image && (n = sc.prototype.getCanvasPattern.call(e, r)), 
            r.save(), r.fillStyle = n || e, r.fillRect(0, 0, o, a), r.restore());
            if (s) {
                var h = this.domBack;
                r.save(), r.globalAlpha = l, r.drawImage(h, 0, 0, o, a), r.restore();
            }
        }
    };
    var uc = "undefined" != typeof window && (window.requestAnimationFrame && window.requestAnimationFrame.bind(window) || window.msRequestAnimationFrame && window.msRequestAnimationFrame.bind(window) || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame) || function(t) {
        setTimeout(t, 16);
    }, hc = new Ah(50), cc = {}, dc = 0, fc = 5e3, pc = /\{([a-zA-Z0-9_]+)\|([^}]*)\}/g, gc = "12px sans-serif", mc = {
        measureText: function(t, e) {
            var n = l();
            return n.font = e || gc, n.measureText(t);
        }
    }, vc = gc, yc = {
        left: 1,
        right: 1,
        center: 1
    }, xc = {
        top: 1,
        bottom: 1,
        middle: 1
    }, _c = [ [ "textShadowBlur", "shadowBlur", 0 ], [ "textShadowOffsetX", "shadowOffsetX", 0 ], [ "textShadowOffsetY", "shadowOffsetY", 0 ], [ "textShadowColor", "shadowColor", "transparent" ] ], wc = {}, bc = {}, Sc = new re(), Mc = function() {};
    Mc.prototype = {
        constructor: Mc,
        drawRectText: function(t, e) {
            var n = this.style;
            e = n.textRect || e, this.__dirty && Be(n);
            var i = n.text;
            if (null != i && (i += ""), Ze(i, n)) {
                t.save();
                var r = this.transform;
                n.transformText ? this.setTransform(t) : r && (Sc.copy(e), Sc.applyTransform(r), 
                e = Sc), ze(this, t, i, n, e, ec), t.restore();
            }
        }
    }, Ke.prototype = {
        constructor: Ke,
        type: "displayable",
        __dirty: !0,
        invisible: !1,
        z: 0,
        z2: 0,
        zlevel: 0,
        draggable: !1,
        dragging: !1,
        silent: !1,
        culling: !1,
        cursor: "pointer",
        rectHover: !1,
        progressive: !1,
        incremental: !1,
        globalScaleRatio: 1,
        beforeBrush: function() {},
        afterBrush: function() {},
        brush: function() {},
        getBoundingRect: function() {},
        contain: function(t, e) {
            return this.rectContain(t, e);
        },
        traverse: function(t, e) {
            t.call(e, this);
        },
        rectContain: function(t, e) {
            var n = this.transformCoordToLocal(t, e);
            return this.getBoundingRect().contain(n[0], n[1]);
        },
        dirty: function() {
            this.__dirty = this.__dirtyText = !0, this._rect = null, this.__zr && this.__zr.refresh();
        },
        animateStyle: function(t) {
            return this.animate("style", t);
        },
        attrKV: function(t, e) {
            "style" !== t ? Xh.prototype.attrKV.call(this, t, e) : this.style.set(e);
        },
        setStyle: function(t, e) {
            return this.style.set(t, e), this.dirty(!1), this;
        },
        useStyle: function(t) {
            return this.style = new ic(t, this), this.dirty(!1), this;
        },
        calculateTextPosition: null
    }, h(Ke, Xh), c(Ke, Mc), $e.prototype = {
        constructor: $e,
        type: "image",
        brush: function(t, e) {
            var n = this.style, i = n.image;
            n.bind(t, this, e);
            var r = this._image = ve(i, this._image, this, this.onload);
            if (r && xe(r)) {
                var o = n.x || 0, a = n.y || 0, s = n.width, l = n.height, u = r.width / r.height;
                if (null == s && null != l ? s = l * u : null == l && null != s ? l = s / u : null == s && null == l && (s = r.width, 
                l = r.height), this.setTransform(t), n.sWidth && n.sHeight) {
                    var h = n.sx || 0, c = n.sy || 0;
                    t.drawImage(r, h, c, n.sWidth, n.sHeight, o, a, s, l);
                } else if (n.sx && n.sy) {
                    var d = s - (h = n.sx), f = l - (c = n.sy);
                    t.drawImage(r, h, c, d, f, o, a, s, l);
                } else t.drawImage(r, o, a, s, l);
                null != n.text && (this.restoreTransform(t), this.drawRectText(t, this.getBoundingRect()));
            }
        },
        getBoundingRect: function() {
            var t = this.style;
            return this._rect || (this._rect = new re(t.x || 0, t.y || 0, t.width || 0, t.height || 0)), 
            this._rect;
        }
    }, h($e, Ke);
    var Ic = 314159, Tc = new re(0, 0, 0, 0), Cc = new re(0, 0, 0, 0), Dc = function(t, e, n) {
        this.type = "canvas";
        var i = !t.nodeName || "CANVAS" === t.nodeName.toUpperCase();
        this._opts = n = a({}, n || {}), this.dpr = n.devicePixelRatio || Vh, this._singleCanvas = i, 
        this.root = t;
        var r = t.style;
        r && (r["-webkit-tap-highlight-color"] = "transparent", r["-webkit-user-select"] = r["user-select"] = r["-webkit-touch-callout"] = "none", 
        t.innerHTML = ""), this.storage = e;
        var o = this._zlevelList = [], s = this._layers = {};
        if (this._layerConfig = {}, this._needsManuallyCompositing = !1, i) {
            var l = t.width, u = t.height;
            null != n.width && (l = n.width), null != n.height && (u = n.height), this.dpr = n.devicePixelRatio || 1, 
            t.width = l * this.dpr, t.height = u * this.dpr, this._width = l, this._height = u;
            var h = new lc(t, this, this.dpr);
            h.__builtin__ = !0, h.initContext(), s[Ic] = h, h.zlevel = Ic, o.push(Ic), this._domRoot = t;
        } else {
            this._width = this._getSize(0), this._height = this._getSize(1);
            var c = this._domRoot = function(t, e) {
                var n = document.createElement("div");
                return n.style.cssText = [ "position:relative", "width:" + t + "px", "height:" + e + "px", "padding:0", "margin:0", "border-width:0" ].join(";") + ";", 
                n;
            }(this._width, this._height);
            t.appendChild(c);
        }
        this._hoverlayer = null, this._hoverElements = [];
    };
    Dc.prototype = {
        constructor: Dc,
        getType: function() {
            return "canvas";
        },
        isSingleCanvas: function() {
            return this._singleCanvas;
        },
        getViewportRoot: function() {
            return this._domRoot;
        },
        getViewportRootOffset: function() {
            var t = this.getViewportRoot();
            return t ? {
                offsetLeft: t.offsetLeft || 0,
                offsetTop: t.offsetTop || 0
            } : void 0;
        },
        refresh: function(t) {
            var e = this.storage.getDisplayList(!0), n = this._zlevelList;
            this._redrawId = Math.random(), this._paintList(e, t, this._redrawId);
            for (var i = 0; i < n.length; i++) {
                var r = n[i], o = this._layers[r];
                if (!o.__builtin__ && o.refresh) {
                    var a = 0 === i ? this._backgroundColor : null;
                    o.refresh(a);
                }
            }
            return this.refreshHover(), this;
        },
        addHover: function(t, e) {
            if (!t.__hoverMir) {
                var n = new t.constructor({
                    style: t.style,
                    shape: t.shape,
                    z: t.z,
                    z2: t.z2,
                    silent: t.silent
                });
                return n.__from = t, t.__hoverMir = n, e && n.setStyle(e), this._hoverElements.push(n), 
                n;
            }
        },
        removeHover: function(t) {
            var e = t.__hoverMir, n = this._hoverElements, i = u(n, e);
            i >= 0 && n.splice(i, 1), t.__hoverMir = null;
        },
        clearHover: function() {
            for (var t = this._hoverElements, e = 0; e < t.length; e++) {
                var n = t[e].__from;
                n && (n.__hoverMir = null);
            }
            t.length = 0;
        },
        refreshHover: function() {
            var t = this._hoverElements, e = t.length, n = this._hoverlayer;
            if (n && n.clear(), e) {
                he(t, this.storage.displayableSortFunc), n || (n = this._hoverlayer = this.getLayer(1e5));
                var i = {};
                n.ctx.save();
                for (var r = 0; e > r; ) {
                    var o = t[r], a = o.__from;
                    a && a.__zr ? (r++, a.invisible || (o.transform = a.transform, o.invTransform = a.invTransform, 
                    o.__clipPaths = a.__clipPaths, this._doPaintEl(o, n, !0, i))) : (t.splice(r, 1), 
                    a.__hoverMir = null, e--);
                }
                n.ctx.restore();
            }
        },
        getHoverLayer: function() {
            return this.getLayer(1e5);
        },
        _paintList: function(t, e, n) {
            if (this._redrawId === n) {
                e = e || !1, this._updateLayerStatus(t);
                var i = this._doPaintList(t, e);
                if (this._needsManuallyCompositing && this._compositeManually(), !i) {
                    var r = this;
                    uc(function() {
                        r._paintList(t, e, n);
                    });
                }
            }
        },
        _compositeManually: function() {
            var t = this.getLayer(Ic).ctx, e = this._domRoot.width, n = this._domRoot.height;
            t.clearRect(0, 0, e, n), this.eachBuiltinLayer(function(i) {
                i.virtual && t.drawImage(i.dom, 0, 0, e, n);
            });
        },
        _doPaintList: function(t, e) {
            for (var n = [], i = 0; i < this._zlevelList.length; i++) {
                var r = this._zlevelList[i];
                (s = this._layers[r]).__builtin__ && s !== this._hoverlayer && (s.__dirty || e) && n.push(s);
            }
            for (var o = !0, a = 0; a < n.length; a++) {
                var s, l = (s = n[a]).ctx, u = {};
                l.save();
                var h = e ? s.__startIndex : s.__drawIndex, c = !e && s.incremental && Date.now, d = c && Date.now(), p = s.zlevel === this._zlevelList[0] ? this._backgroundColor : null;
                if (s.__startIndex === s.__endIndex) s.clear(!1, p); else if (h === s.__startIndex) {
                    var g = t[h];
                    g.incremental && g.notClear && !e || s.clear(!1, p);
                }
                -1 === h && (console.error("For some unknown reason. drawIndex is -1"), h = s.__startIndex);
                for (var m = h; m < s.__endIndex; m++) {
                    var v = t[m];
                    if (this._doPaintEl(v, s, e, u), v.__dirty = v.__dirtyText = !1, c) if (Date.now() - d > 15) break;
                }
                s.__drawIndex = m, s.__drawIndex < s.__endIndex && (o = !1), u.prevElClipPaths && l.restore(), 
                l.restore();
            }
            return Bu.wxa && f(this._layers, function(t) {
                t && t.ctx && t.ctx.draw && t.ctx.draw();
            }), o;
        },
        _doPaintEl: function(t, e, n, i) {
            var r = e.ctx, o = t.transform;
            if (!(!e.__dirty && !n || t.invisible || 0 === t.style.opacity || o && !o[0] && !o[3] || t.culling && function(t, e, n) {
                return Tc.copy(t.getBoundingRect()), t.transform && Tc.applyTransform(t.transform), 
                Cc.width = e, Cc.height = n, !Tc.intersect(Cc);
            }(t, this._width, this._height))) {
                var a = t.__clipPaths, s = i.prevElClipPaths;
                (!s || function(t, e) {
                    if (t === e) return !1;
                    if (!t || !e || t.length !== e.length) return !0;
                    for (var n = 0; n < t.length; n++) if (t[n] !== e[n]) return !0;
                    return !1;
                }(a, s)) && (s && (r.restore(), i.prevElClipPaths = null, i.prevEl = null), a && (r.save(), 
                function(t, e) {
                    for (var n = 0; n < t.length; n++) {
                        var i = t[n];
                        i.setTransform(e), e.beginPath(), i.buildPath(e, i.shape), e.clip(), i.restoreTransform(e);
                    }
                }(a, r), i.prevElClipPaths = a)), t.beforeBrush && t.beforeBrush(r), t.brush(r, i.prevEl || null), 
                i.prevEl = t, t.afterBrush && t.afterBrush(r);
            }
        },
        getLayer: function(t, e) {
            this._singleCanvas && !this._needsManuallyCompositing && (t = Ic);
            var n = this._layers[t];
            return n || ((n = new lc("zr_" + t, this, this.dpr)).zlevel = t, n.__builtin__ = !0, 
            this._layerConfig[t] ? r(n, this._layerConfig[t], !0) : this._layerConfig[t - .01] && r(n, this._layerConfig[t - .01], !0), 
            e && (n.virtual = e), this.insertLayer(t, n), n.initContext()), n;
        },
        insertLayer: function(t, e) {
            var n = this._layers, i = this._zlevelList, r = i.length, o = null, a = -1, s = this._domRoot;
            if (n[t]) Gh("ZLevel " + t + " has been used already"); else if (function(t) {
                return !!t && (!!t.__builtin__ || "function" == typeof t.resize && "function" == typeof t.refresh);
            }(e)) {
                if (r > 0 && t > i[0]) {
                    for (a = 0; r - 1 > a && !(i[a] < t && i[a + 1] > t); a++) ;
                    o = n[i[a]];
                }
                if (i.splice(a + 1, 0, t), n[t] = e, !e.virtual) if (o) {
                    var l = o.dom;
                    l.nextSibling ? s.insertBefore(e.dom, l.nextSibling) : s.appendChild(e.dom);
                } else s.firstChild ? s.insertBefore(e.dom, s.firstChild) : s.appendChild(e.dom);
            } else Gh("Layer of zlevel " + t + " is not valid");
        },
        eachLayer: function(t, e) {
            var n, i, r = this._zlevelList;
            for (i = 0; i < r.length; i++) n = r[i], t.call(e, this._layers[n], n);
        },
        eachBuiltinLayer: function(t, e) {
            var n, i, r, o = this._zlevelList;
            for (r = 0; r < o.length; r++) i = o[r], (n = this._layers[i]).__builtin__ && t.call(e, n, i);
        },
        eachOtherLayer: function(t, e) {
            var n, i, r, o = this._zlevelList;
            for (r = 0; r < o.length; r++) i = o[r], (n = this._layers[i]).__builtin__ || t.call(e, n, i);
        },
        getLayers: function() {
            return this._layers;
        },
        _updateLayerStatus: function(t) {
            function e(t) {
                r && (r.__endIndex !== t && (r.__dirty = !0), r.__endIndex = t);
            }
            if (this.eachBuiltinLayer(function(t) {
                t.__dirty = t.__used = !1;
            }), this._singleCanvas) for (var n = 1; n < t.length; n++) {
                if ((s = t[n]).zlevel !== t[n - 1].zlevel || s.incremental) {
                    this._needsManuallyCompositing = !0;
                    break;
                }
            }
            var i, r = null, o = 0;
            for (n = 0; n < t.length; n++) {
                var a, s, l = (s = t[n]).zlevel;
                i !== l && (i = l, o = 0), s.incremental ? ((a = this.getLayer(l + .001, this._needsManuallyCompositing)).incremental = !0, 
                o = 1) : a = this.getLayer(l + (o > 0 ? .01 : 0), this._needsManuallyCompositing), 
                a.__builtin__ || Gh("ZLevel " + l + " has been used by unkown layer " + a.id), a !== r && (a.__used = !0, 
                a.__startIndex !== n && (a.__dirty = !0), a.__startIndex = n, a.__drawIndex = a.incremental ? -1 : n, 
                e(n), r = a), s.__dirty && (a.__dirty = !0, a.incremental && a.__drawIndex < 0 && (a.__drawIndex = n));
            }
            e(n), this.eachBuiltinLayer(function(t) {
                !t.__used && t.getElementCount() > 0 && (t.__dirty = !0, t.__startIndex = t.__endIndex = t.__drawIndex = 0), 
                t.__dirty && t.__drawIndex < 0 && (t.__drawIndex = t.__startIndex);
            });
        },
        clear: function() {
            return this.eachBuiltinLayer(this._clearLayer), this;
        },
        _clearLayer: function(t) {
            t.clear();
        },
        setBackgroundColor: function(t) {
            this._backgroundColor = t;
        },
        configLayer: function(t, e) {
            if (e) {
                var n = this._layerConfig;
                n[t] ? r(n[t], e, !0) : n[t] = e;
                for (var i = 0; i < this._zlevelList.length; i++) {
                    var o = this._zlevelList[i];
                    if (o === t || o === t + .01) r(this._layers[o], n[t], !0);
                }
            }
        },
        delLayer: function(t) {
            var e = this._layers, n = this._zlevelList, i = e[t];
            i && (i.dom.parentNode.removeChild(i.dom), delete e[t], n.splice(u(n, t), 1));
        },
        resize: function(t, e) {
            if (this._domRoot.style) {
                var n = this._domRoot;
                n.style.display = "none";
                var i = this._opts;
                if (null != t && (i.width = t), null != e && (i.height = e), t = this._getSize(0), 
                e = this._getSize(1), n.style.display = "", this._width !== t || e !== this._height) {
                    for (var r in n.style.width = t + "px", n.style.height = e + "px", this._layers) this._layers.hasOwnProperty(r) && this._layers[r].resize(t, e);
                    f(this._progressiveLayers, function(n) {
                        n.resize(t, e);
                    }), this.refresh(!0);
                }
                this._width = t, this._height = e;
            } else {
                if (null == t || null == e) return;
                this._width = t, this._height = e, this.getLayer(Ic).resize(t, e);
            }
            return this;
        },
        clearLayer: function(t) {
            var e = this._layers[t];
            e && e.clear();
        },
        dispose: function() {
            this.root.innerHTML = "", this.root = this.storage = this._domRoot = this._layers = null;
        },
        getRenderedCanvas: function(t) {
            if (t = t || {}, this._singleCanvas && !this._compositeManually) return this._layers[Ic].dom;
            var e = new lc("image", this, t.pixelRatio || this.dpr);
            if (e.initContext(), e.clear(!1, t.backgroundColor || this._backgroundColor), t.pixelRatio <= this.dpr) {
                this.refresh();
                var n = e.dom.width, i = e.dom.height, r = e.ctx;
                this.eachLayer(function(t) {
                    t.__builtin__ ? r.drawImage(t.dom, 0, 0, n, i) : t.renderToCanvas && (e.ctx.save(), 
                    t.renderToCanvas(e.ctx), e.ctx.restore());
                });
            } else for (var o = {}, a = this.storage.getDisplayList(!0), s = 0; s < a.length; s++) {
                var l = a[s];
                this._doPaintEl(l, e, !0, o);
            }
            return e.dom;
        },
        getWidth: function() {
            return this._width;
        },
        getHeight: function() {
            return this._height;
        },
        _getSize: function(t) {
            var e = this._opts, n = [ "width", "height" ][t], i = [ "clientWidth", "clientHeight" ][t], r = [ "paddingLeft", "paddingTop" ][t], o = [ "paddingRight", "paddingBottom" ][t];
            if (null != e[n] && "auto" !== e[n]) return parseFloat(e[n]);
            var a = this.root, s = document.defaultView.getComputedStyle(a);
            return (a[i] || Qe(s[n]) || Qe(a.style[n])) - (Qe(s[r]) || 0) - (Qe(s[o]) || 0) | 0;
        },
        pathToImage: function(t, e) {
            e = e || this.dpr;
            var n = document.createElement("canvas"), i = n.getContext("2d"), r = t.getBoundingRect(), o = t.style, a = o.shadowBlur * e, s = o.shadowOffsetX * e, l = o.shadowOffsetY * e, u = o.hasStroke() ? o.lineWidth : 0, h = Math.max(u / 2, -s + a), c = Math.max(u / 2, s + a), d = Math.max(u / 2, -l + a), f = Math.max(u / 2, l + a), p = r.width + h + c, g = r.height + d + f;
            n.width = p * e, n.height = g * e, i.scale(e, e), i.clearRect(0, 0, p, g), i.dpr = e;
            var m = {
                position: t.position,
                rotation: t.rotation,
                scale: t.scale
            };
            t.position = [ h - r.x, d - r.y ], t.rotation = 0, t.scale = [ 1, 1 ], t.updateTransform(), 
            t && t.brush(i);
            var v = new $e({
                style: {
                    x: 0,
                    y: 0,
                    image: n
                }
            });
            return null != m.position && (v.position = t.position = m.position), null != m.rotation && (v.rotation = t.rotation = m.rotation), 
            null != m.scale && (v.scale = t.scale = m.scale), v;
        }
    };
    var Ac = function(t) {
        t = t || {}, this.stage = t.stage || {}, this.onframe = t.onframe || function() {}, 
        this._clips = [], this._running = !1, this._time, this._pausedTime, this._pauseStart, 
        this._paused = !1, ih.call(this);
    };
    Ac.prototype = {
        constructor: Ac,
        addClip: function(t) {
            this._clips.push(t);
        },
        addAnimator: function(t) {
            t.animation = this;
            for (var e = t.getClips(), n = 0; n < e.length; n++) this.addClip(e[n]);
        },
        removeClip: function(t) {
            var e = u(this._clips, t);
            e >= 0 && this._clips.splice(e, 1);
        },
        removeAnimator: function(t) {
            for (var e = t.getClips(), n = 0; n < e.length; n++) this.removeClip(e[n]);
            t.animation = null;
        },
        _update: function() {
            for (var t = new Date().getTime() - this._pausedTime, e = t - this._time, n = this._clips, i = n.length, r = [], o = [], a = 0; i > a; a++) {
                var s = n[a], l = s.step(t, e);
                l && (r.push(l), o.push(s));
            }
            for (a = 0; i > a; ) n[a]._needsRemove ? (n[a] = n[i - 1], n.pop(), i--) : a++;
            i = r.length;
            for (a = 0; i > a; a++) o[a].fire(r[a]);
            this._time = t, this.onframe(e), this.trigger("frame", e), this.stage.update && this.stage.update();
        },
        _startLoop: function() {
            var t = this;
            this._running = !0, uc(function e() {
                t._running && (uc(e), !t._paused && t._update());
            });
        },
        start: function() {
            this._time = new Date().getTime(), this._pausedTime = 0, this._startLoop();
        },
        stop: function() {
            this._running = !1;
        },
        pause: function() {
            this._paused || (this._pauseStart = new Date().getTime(), this._paused = !0);
        },
        resume: function() {
            this._paused && (this._pausedTime += new Date().getTime() - this._pauseStart, this._paused = !1);
        },
        clear: function() {
            this._clips = [];
        },
        isFinished: function() {
            return !this._clips.length;
        },
        animate: function(t, e) {
            var n = new Rh(t, (e = e || {}).loop, e.getter, e.setter);
            return this.addAnimator(n), n;
        }
    }, c(Ac, ih);
    var kc = Bu.domSupported, Pc = function() {
        var t = [ "click", "dblclick", "mousewheel", "mouseout", "mouseup", "mousedown", "mousemove", "contextmenu" ], e = {
            pointerdown: 1,
            pointerup: 1,
            pointermove: 1,
            pointerout: 1
        }, n = p(t, function(t) {
            var n = t.replace("mouse", "pointer");
            return e.hasOwnProperty(n) ? n : t;
        });
        return {
            mouse: t,
            touch: [ "touchstart", "touchend", "touchmove" ],
            pointer: n
        };
    }(), Lc = {
        mouse: [ "mousemove", "mouseup" ],
        pointer: [ "pointermove", "pointerup" ]
    }, Oc = rn.prototype;
    Oc.stopPropagation = Oc.stopImmediatePropagation = Oc.preventDefault = R;
    var Ec = {
        mousedown: function(t) {
            t = ht(this.dom, t), this._mayPointerCapture = [ t.zrX, t.zrY ], this.trigger("mousedown", t);
        },
        mousemove: function(t) {
            t = ht(this.dom, t);
            var e = this._mayPointerCapture;
            !e || t.zrX === e[0] && t.zrY === e[1] || un(this, !0), this.trigger("mousemove", t);
        },
        mouseup: function(t) {
            t = ht(this.dom, t), un(this, !1), this.trigger("mouseup", t);
        },
        mouseout: function(t) {
            t = ht(this.dom, t), this._pointerCapturing && (t.zrEventControl = "no_globalout");
            var e = t.toElement || t.relatedTarget;
            t.zrIsToLocalDOM = nn(this, e), this.trigger("mouseout", t);
        },
        touchstart: function(t) {
            en(t = ht(this.dom, t)), this._lastTouchMoment = new Date(), this.handler.processGesture(t, "start"), 
            Ec.mousemove.call(this, t), Ec.mousedown.call(this, t);
        },
        touchmove: function(t) {
            en(t = ht(this.dom, t)), this.handler.processGesture(t, "change"), Ec.mousemove.call(this, t);
        },
        touchend: function(t) {
            en(t = ht(this.dom, t)), this.handler.processGesture(t, "end"), Ec.mouseup.call(this, t), 
            +new Date() - this._lastTouchMoment < 300 && Ec.click.call(this, t);
        },
        pointerdown: function(t) {
            Ec.mousedown.call(this, t);
        },
        pointermove: function(t) {
            tn(t) || Ec.mousemove.call(this, t);
        },
        pointerup: function(t) {
            Ec.mouseup.call(this, t);
        },
        pointerout: function(t) {
            tn(t) || Ec.mouseout.call(this, t);
        }
    };
    f([ "click", "mousewheel", "dblclick", "contextmenu" ], function(t) {
        Ec[t] = function(e) {
            e = ht(this.dom, e), this.trigger(t, e);
        };
    });
    var Bc = {
        pointermove: function(t) {
            tn(t) || Bc.mousemove.call(this, t);
        },
        pointerup: function(t) {
            Bc.mouseup.call(this, t);
        },
        mousemove: function(t) {
            this.trigger("mousemove", t);
        },
        mouseup: function(t) {
            var e = this._pointerCapturing;
            un(this, !1), this.trigger("mouseup", t), e && (t.zrEventControl = "only_globalout", 
            this.trigger("mouseout", t));
        }
    }, Nc = cn.prototype;
    Nc.dispose = function() {
        ln(this._localHandlerScope), kc && ln(this._globalHandlerScope);
    }, Nc.setCursor = function(t) {
        this.dom.style && (this.dom.style.cursor = t || "default");
    }, c(cn, ih);
    var zc = !Bu.canvasSupported, Rc = {
        canvas: Dc
    }, Fc = {}, Vc = "4.3.2", Hc = function(t, e, n) {
        n = n || {}, this.dom = e, this.id = t;
        var i = this, r = new $h(), o = n.renderer;
        if (zc) {
            if (!Rc.vml) throw new Error("You need to require 'zrender/vml/vml' to support IE8");
            o = "vml";
        } else o && Rc[o] || (o = "canvas");
        var a = new Rc[o](e, r, n, t);
        this.storage = r, this.painter = a;
        var s = Bu.node || Bu.worker ? null : new cn(a.getViewportRoot(), a.root);
        this.handler = new gh(r, a, s, a.root), this.animation = new Ac({
            stage: {
                update: v(this.flush, this)
            }
        }), this.animation.start(), this._needsRefresh;
        var l = r.delFromStorage, u = r.addToStorage;
        r.delFromStorage = function(t) {
            l.call(r, t), t && t.removeSelfFromZr(i);
        }, r.addToStorage = function(t) {
            u.call(r, t), t.addSelfToZr(i);
        };
    };
    Hc.prototype = {
        constructor: Hc,
        getId: function() {
            return this.id;
        },
        add: function(t) {
            this.storage.addRoot(t), this._needsRefresh = !0;
        },
        remove: function(t) {
            this.storage.delRoot(t), this._needsRefresh = !0;
        },
        configLayer: function(t, e) {
            this.painter.configLayer && this.painter.configLayer(t, e), this._needsRefresh = !0;
        },
        setBackgroundColor: function(t) {
            this.painter.setBackgroundColor && this.painter.setBackgroundColor(t), this._needsRefresh = !0;
        },
        refreshImmediately: function() {
            this._needsRefresh = this._needsRefreshHover = !1, this.painter.refresh(), this._needsRefresh = this._needsRefreshHover = !1;
        },
        refresh: function() {
            this._needsRefresh = !0;
        },
        flush: function() {
            var t;
            this._needsRefresh && (t = !0, this.refreshImmediately()), this._needsRefreshHover && (t = !0, 
            this.refreshHoverImmediately()), t && this.trigger("rendered");
        },
        addHover: function(t, e) {
            if (this.painter.addHover) {
                var n = this.painter.addHover(t, e);
                return this.refreshHover(), n;
            }
        },
        removeHover: function(t) {
            this.painter.removeHover && (this.painter.removeHover(t), this.refreshHover());
        },
        clearHover: function() {
            this.painter.clearHover && (this.painter.clearHover(), this.refreshHover());
        },
        refreshHover: function() {
            this._needsRefreshHover = !0;
        },
        refreshHoverImmediately: function() {
            this._needsRefreshHover = !1, this.painter.refreshHover && this.painter.refreshHover();
        },
        resize: function(t) {
            t = t || {}, this.painter.resize(t.width, t.height), this.handler.resize();
        },
        clearAnimation: function() {
            this.animation.clear();
        },
        getWidth: function() {
            return this.painter.getWidth();
        },
        getHeight: function() {
            return this.painter.getHeight();
        },
        pathToImage: function(t, e) {
            return this.painter.pathToImage(t, e);
        },
        setCursorStyle: function(t) {
            this.handler.setCursorStyle(t);
        },
        findHover: function(t, e) {
            return this.handler.findHover(t, e);
        },
        on: function(t, e, n) {
            this.handler.on(t, e, n);
        },
        off: function(t, e) {
            this.handler.off(t, e);
        },
        trigger: function(t, e) {
            this.handler.trigger(t, e);
        },
        clear: function() {
            this.storage.delRoot(), this.painter.clear();
        },
        dispose: function() {
            this.animation.stop(), this.clear(), this.storage.dispose(), this.painter.dispose(), 
            this.handler.dispose(), this.animation = this.storage = this.painter = this.handler = null, 
            function(t) {
                delete Fc[t];
            }(this.id);
        }
    };
    var Gc = (Object.freeze || Object)({
        version: Vc,
        init: dn,
        dispose: function(t) {
            if (t) t.dispose(); else {
                for (var e in Fc) Fc.hasOwnProperty(e) && Fc[e].dispose();
                Fc = {};
            }
            return this;
        },
        getInstance: function(t) {
            return Fc[t];
        },
        registerPainter: function(t, e) {
            Rc[t] = e;
        }
    }), Wc = f, Xc = b, Uc = x, Yc = "series\0", qc = [ "fontStyle", "fontWeight", "fontSize", "fontFamily", "rich", "tag", "color", "textBorderColor", "textBorderWidth", "width", "height", "lineHeight", "align", "verticalAlign", "baseline", "shadowColor", "shadowBlur", "shadowOffsetX", "shadowOffsetY", "textShadowColor", "textShadowBlur", "textShadowOffsetX", "textShadowOffsetY", "backgroundColor", "borderColor", "borderWidth", "borderRadius", "padding" ], jc = 0, Zc = ".", Kc = "___EC__COMPONENT__CONTAINER___", $c = 0, Qc = function(t) {
        for (var e = 0; e < t.length; e++) t[e][1] || (t[e][1] = t[e][0]);
        return function(e, n, i) {
            for (var r = {}, o = 0; o < t.length; o++) {
                var a = t[o][1];
                if (!(n && u(n, a) >= 0 || i && u(i, a) < 0)) {
                    var s = e.getShallow(a);
                    null != s && (r[t[o][0]] = s);
                }
            }
            return r;
        };
    }, Jc = Qc([ [ "lineWidth", "width" ], [ "stroke", "color" ], [ "opacity" ], [ "shadowBlur" ], [ "shadowOffsetX" ], [ "shadowOffsetY" ], [ "shadowColor" ] ]), td = {
        getLineStyle: function(t) {
            var e = Jc(this, t);
            return e.lineDash = this.getLineDash(e.lineWidth), e;
        },
        getLineDash: function(t) {
            null == t && (t = 1);
            var e = this.get("type"), n = Math.max(t, 2), i = 4 * t;
            return "solid" !== e && null != e && ("dashed" === e ? [ i, i ] : [ n, n ]);
        }
    }, ed = Qc([ [ "fill", "color" ], [ "shadowBlur" ], [ "shadowOffsetX" ], [ "shadowOffsetY" ], [ "opacity" ], [ "shadowColor" ] ]), nd = {
        getAreaStyle: function(t, e) {
            return ed(this, t, e);
        }
    }, id = Math.pow, rd = Math.sqrt, od = 1e-8, ad = 1e-4, sd = rd(3), ld = 1 / 3, ud = F(), hd = F(), cd = F(), dd = Math.min, fd = Math.max, pd = Math.sin, gd = Math.cos, md = 2 * Math.PI, vd = F(), yd = F(), xd = F(), _d = [], wd = [], bd = {
        M: 1,
        L: 2,
        C: 3,
        Q: 4,
        A: 5,
        Z: 6,
        R: 7
    }, Sd = [], Md = [], Id = [], Td = [], Cd = Math.min, Dd = Math.max, Ad = Math.cos, kd = Math.sin, Pd = Math.sqrt, Ld = Math.abs, Od = "undefined" != typeof Float32Array, Ed = function(t) {
        this._saveData = !t, this._saveData && (this.data = []), this._ctx = null;
    };
    Ed.prototype = {
        constructor: Ed,
        _xi: 0,
        _yi: 0,
        _x0: 0,
        _y0: 0,
        _ux: 0,
        _uy: 0,
        _len: 0,
        _lineDash: null,
        _dashOffset: 0,
        _dashIdx: 0,
        _dashSum: 0,
        setScale: function(t, e, n) {
            n = n || 0, this._ux = Ld(n / Vh / t) || 0, this._uy = Ld(n / Vh / e) || 0;
        },
        getContext: function() {
            return this._ctx;
        },
        beginPath: function(t) {
            return this._ctx = t, t && t.beginPath(), t && (this.dpr = t.dpr), this._saveData && (this._len = 0), 
            this._lineDash && (this._lineDash = null, this._dashOffset = 0), this;
        },
        moveTo: function(t, e) {
            return this.addData(bd.M, t, e), this._ctx && this._ctx.moveTo(t, e), this._x0 = t, 
            this._y0 = e, this._xi = t, this._yi = e, this;
        },
        lineTo: function(t, e) {
            var n = Ld(t - this._xi) > this._ux || Ld(e - this._yi) > this._uy || this._len < 5;
            return this.addData(bd.L, t, e), this._ctx && n && (this._needsDash() ? this._dashedLineTo(t, e) : this._ctx.lineTo(t, e)), 
            n && (this._xi = t, this._yi = e), this;
        },
        bezierCurveTo: function(t, e, n, i, r, o) {
            return this.addData(bd.C, t, e, n, i, r, o), this._ctx && (this._needsDash() ? this._dashedBezierTo(t, e, n, i, r, o) : this._ctx.bezierCurveTo(t, e, n, i, r, o)), 
            this._xi = r, this._yi = o, this;
        },
        quadraticCurveTo: function(t, e, n, i) {
            return this.addData(bd.Q, t, e, n, i), this._ctx && (this._needsDash() ? this._dashedQuadraticTo(t, e, n, i) : this._ctx.quadraticCurveTo(t, e, n, i)), 
            this._xi = n, this._yi = i, this;
        },
        arc: function(t, e, n, i, r, o) {
            return this.addData(bd.A, t, e, n, n, i, r - i, 0, o ? 0 : 1), this._ctx && this._ctx.arc(t, e, n, i, r, o), 
            this._xi = Ad(r) * n + t, this._yi = kd(r) * n + e, this;
        },
        arcTo: function(t, e, n, i, r) {
            return this._ctx && this._ctx.arcTo(t, e, n, i, r), this;
        },
        rect: function(t, e, n, i) {
            return this._ctx && this._ctx.rect(t, e, n, i), this.addData(bd.R, t, e, n, i), 
            this;
        },
        closePath: function() {
            this.addData(bd.Z);
            var t = this._ctx, e = this._x0, n = this._y0;
            return t && (this._needsDash() && this._dashedLineTo(e, n), t.closePath()), this._xi = e, 
            this._yi = n, this;
        },
        fill: function(t) {
            t && t.fill(), this.toStatic();
        },
        stroke: function(t) {
            t && t.stroke(), this.toStatic();
        },
        setLineDash: function(t) {
            if (t instanceof Array) {
                this._lineDash = t, this._dashIdx = 0;
                for (var e = 0, n = 0; n < t.length; n++) e += t[n];
                this._dashSum = e;
            }
            return this;
        },
        setLineDashOffset: function(t) {
            return this._dashOffset = t, this;
        },
        len: function() {
            return this._len;
        },
        setData: function(t) {
            var e = t.length;
            this.data && this.data.length === e || !Od || (this.data = new Float32Array(e));
            for (var n = 0; e > n; n++) this.data[n] = t[n];
            this._len = e;
        },
        appendPath: function(t) {
            t instanceof Array || (t = [ t ]);
            for (var e = t.length, n = 0, i = this._len, r = 0; e > r; r++) n += t[r].len();
            Od && this.data instanceof Float32Array && (this.data = new Float32Array(i + n));
            for (r = 0; e > r; r++) for (var o = t[r].data, a = 0; a < o.length; a++) this.data[i++] = o[a];
            this._len = i;
        },
        addData: function(t) {
            if (this._saveData) {
                var e = this.data;
                this._len + arguments.length > e.length && (this._expandData(), e = this.data);
                for (var n = 0; n < arguments.length; n++) e[this._len++] = arguments[n];
                this._prevCmd = t;
            }
        },
        _expandData: function() {
            if (!(this.data instanceof Array)) {
                for (var t = [], e = 0; e < this._len; e++) t[e] = this.data[e];
                this.data = t;
            }
        },
        _needsDash: function() {
            return this._lineDash;
        },
        _dashedLineTo: function(t, e) {
            var n, i, r = this._dashSum, o = this._dashOffset, a = this._lineDash, s = this._ctx, l = this._xi, u = this._yi, h = t - l, c = e - u, d = Pd(h * h + c * c), f = l, p = u, g = a.length;
            for (0 > o && (o = r + o), f -= (o %= r) * (h /= d), p -= o * (c /= d); h > 0 && t >= f || 0 > h && f >= t || 0 === h && (c > 0 && e >= p || 0 > c && p >= e); ) f += h * (n = a[i = this._dashIdx]), 
            p += c * n, this._dashIdx = (i + 1) % g, h > 0 && l > f || 0 > h && f > l || c > 0 && u > p || 0 > c && p > u || s[i % 2 ? "moveTo" : "lineTo"](h >= 0 ? Cd(f, t) : Dd(f, t), c >= 0 ? Cd(p, e) : Dd(p, e));
            h = f - t, c = p - e, this._dashOffset = -Pd(h * h + c * c);
        },
        _dashedBezierTo: function(t, e, n, i, r, o) {
            var a, s, l, u, h, c = this._dashSum, d = this._dashOffset, f = this._lineDash, p = this._ctx, g = this._xi, m = this._yi, v = On, y = 0, x = this._dashIdx, _ = f.length, w = 0;
            for (0 > d && (d = c + d), d %= c, a = 0; 1 > a; a += .1) s = v(g, t, n, r, a + .1) - v(g, t, n, r, a), 
            l = v(m, e, i, o, a + .1) - v(m, e, i, o, a), y += Pd(s * s + l * l);
            for (;_ > x && !((w += f[x]) > d); x++) ;
            for (a = (w - d) / y; 1 >= a; ) u = v(g, t, n, r, a), h = v(m, e, i, o, a), x % 2 ? p.moveTo(u, h) : p.lineTo(u, h), 
            a += f[x] / y, x = (x + 1) % _;
            x % 2 != 0 && p.lineTo(r, o), s = r - u, l = o - h, this._dashOffset = -Pd(s * s + l * l);
        },
        _dashedQuadraticTo: function(t, e, n, i) {
            var r = n, o = i;
            n = (n + 2 * t) / 3, i = (i + 2 * e) / 3, t = (this._xi + 2 * t) / 3, e = (this._yi + 2 * e) / 3, 
            this._dashedBezierTo(t, e, n, i, r, o);
        },
        toStatic: function() {
            var t = this.data;
            t instanceof Array && (t.length = this._len, Od && (this.data = new Float32Array(t)));
        },
        getBoundingRect: function() {
            Sd[0] = Sd[1] = Id[0] = Id[1] = Number.MAX_VALUE, Md[0] = Md[1] = Td[0] = Td[1] = -Number.MAX_VALUE;
            for (var t = this.data, e = 0, n = 0, i = 0, r = 0, o = 0; o < t.length; ) {
                var a = t[o++];
                switch (1 === o && (i = e = t[o], r = n = t[o + 1]), a) {
                  case bd.M:
                    e = i = t[o++], n = r = t[o++], Id[0] = i, Id[1] = r, Td[0] = i, Td[1] = r;
                    break;

                  case bd.L:
                    Gn(e, n, t[o], t[o + 1], Id, Td), e = t[o++], n = t[o++];
                    break;

                  case bd.C:
                    Wn(e, n, t[o++], t[o++], t[o++], t[o++], t[o], t[o + 1], Id, Td), e = t[o++], n = t[o++];
                    break;

                  case bd.Q:
                    Xn(e, n, t[o++], t[o++], t[o], t[o + 1], Id, Td), e = t[o++], n = t[o++];
                    break;

                  case bd.A:
                    var s = t[o++], l = t[o++], u = t[o++], h = t[o++], c = t[o++], d = t[o++] + c;
                    o += 1;
                    var f = 1 - t[o++];
                    1 === o && (i = Ad(c) * u + s, r = kd(c) * h + l), Un(s, l, u, h, c, d, f, Id, Td), 
                    e = Ad(d) * u + s, n = kd(d) * h + l;
                    break;

                  case bd.R:
                    Gn(i = e = t[o++], r = n = t[o++], i + t[o++], r + t[o++], Id, Td);
                    break;

                  case bd.Z:
                    e = i, n = r;
                }
                Q(Sd, Sd, Id), J(Md, Md, Td);
            }
            return 0 === o && (Sd[0] = Sd[1] = Md[0] = Md[1] = 0), new re(Sd[0], Sd[1], Md[0] - Sd[0], Md[1] - Sd[1]);
        },
        rebuildPath: function(t) {
            for (var e, n, i, r, o, a, s = this.data, l = this._ux, u = this._uy, h = this._len, c = 0; h > c; ) {
                var d = s[c++];
                switch (1 === c && (e = i = s[c], n = r = s[c + 1]), d) {
                  case bd.M:
                    e = i = s[c++], n = r = s[c++], t.moveTo(i, r);
                    break;

                  case bd.L:
                    o = s[c++], a = s[c++], (Ld(o - i) > l || Ld(a - r) > u || c === h - 1) && (t.lineTo(o, a), 
                    i = o, r = a);
                    break;

                  case bd.C:
                    t.bezierCurveTo(s[c++], s[c++], s[c++], s[c++], s[c++], s[c++]), i = s[c - 2], r = s[c - 1];
                    break;

                  case bd.Q:
                    t.quadraticCurveTo(s[c++], s[c++], s[c++], s[c++]), i = s[c - 2], r = s[c - 1];
                    break;

                  case bd.A:
                    var f = s[c++], p = s[c++], g = s[c++], m = s[c++], v = s[c++], y = s[c++], x = s[c++], _ = s[c++], w = g > m ? g : m, b = g > m ? 1 : g / m, S = g > m ? m / g : 1, M = v + y;
                    Math.abs(g - m) > .001 ? (t.translate(f, p), t.rotate(x), t.scale(b, S), t.arc(0, 0, w, v, M, 1 - _), 
                    t.scale(1 / b, 1 / S), t.rotate(-x), t.translate(-f, -p)) : t.arc(f, p, w, v, M, 1 - _), 
                    1 === c && (e = Ad(v) * g + f, n = kd(v) * m + p), i = Ad(M) * g + f, r = kd(M) * m + p;
                    break;

                  case bd.R:
                    e = i = s[c], n = r = s[c + 1], t.rect(s[c++], s[c++], s[c++], s[c++]);
                    break;

                  case bd.Z:
                    t.closePath(), i = e, r = n;
                }
            }
        }
    }, Ed.CMD = bd;
    var Bd = 2 * Math.PI, Nd = 2 * Math.PI, zd = Ed.CMD, Rd = 2 * Math.PI, Fd = 1e-4, Vd = [ -1, -1, -1 ], Hd = [ -1, -1 ], Gd = sc.prototype.getCanvasPattern, Wd = Math.abs, Xd = new Ed(!0);
    ii.prototype = {
        constructor: ii,
        type: "path",
        __dirtyPath: !0,
        strokeContainThreshold: 5,
        segmentIgnoreThreshold: 0,
        subPixelOptimize: !1,
        brush: function(t, e) {
            var n, i = this.style, r = this.path || Xd, o = i.hasStroke(), a = i.hasFill(), s = i.fill, l = i.stroke, u = a && !!s.colorStops, h = o && !!l.colorStops, c = a && !!s.image, d = o && !!l.image;
            (i.bind(t, this, e), this.setTransform(t), this.__dirty) && (u && (n = n || this.getBoundingRect(), 
            this._fillGradient = i.getGradient(t, s, n)), h && (n = n || this.getBoundingRect(), 
            this._strokeGradient = i.getGradient(t, l, n)));
            u ? t.fillStyle = this._fillGradient : c && (t.fillStyle = Gd.call(s, t)), h ? t.strokeStyle = this._strokeGradient : d && (t.strokeStyle = Gd.call(l, t));
            var f = i.lineDash, p = i.lineDashOffset, g = !!t.setLineDash, m = this.getGlobalScale();
            if (r.setScale(m[0], m[1], this.segmentIgnoreThreshold), this.__dirtyPath || f && !g && o ? (r.beginPath(t), 
            f && !g && (r.setLineDash(f), r.setLineDashOffset(p)), this.buildPath(r, this.shape, !1), 
            this.path && (this.__dirtyPath = !1)) : (t.beginPath(), this.path.rebuildPath(t)), 
            a) if (null != i.fillOpacity) {
                var v = t.globalAlpha;
                t.globalAlpha = i.fillOpacity * i.opacity, r.fill(t), t.globalAlpha = v;
            } else r.fill(t);
            if (f && g && (t.setLineDash(f), t.lineDashOffset = p), o) if (null != i.strokeOpacity) {
                v = t.globalAlpha;
                t.globalAlpha = i.strokeOpacity * i.opacity, r.stroke(t), t.globalAlpha = v;
            } else r.stroke(t);
            f && g && t.setLineDash([]), null != i.text && (this.restoreTransform(t), this.drawRectText(t, this.getBoundingRect()));
        },
        buildPath: function() {},
        createPathProxy: function() {
            this.path = new Ed();
        },
        getBoundingRect: function() {
            var t = this._rect, e = this.style, n = !t;
            if (n) {
                var i = this.path;
                i || (i = this.path = new Ed()), this.__dirtyPath && (i.beginPath(), this.buildPath(i, this.shape, !1)), 
                t = i.getBoundingRect();
            }
            if (this._rect = t, e.hasStroke()) {
                var r = this._rectWithStroke || (this._rectWithStroke = t.clone());
                if (this.__dirty || n) {
                    r.copy(t);
                    var o = e.lineWidth, a = e.strokeNoScale ? this.getLineScale() : 1;
                    e.hasFill() || (o = Math.max(o, this.strokeContainThreshold || 4)), a > 1e-10 && (r.width += o / a, 
                    r.height += o / a, r.x -= o / a / 2, r.y -= o / a / 2);
                }
                return r;
            }
            return t;
        },
        contain: function(t, e) {
            var n = this.transformCoordToLocal(t, e), i = this.getBoundingRect(), r = this.style;
            if (t = n[0], e = n[1], i.contain(t, e)) {
                var o = this.path.data;
                if (r.hasStroke()) {
                    var a = r.lineWidth, s = r.strokeNoScale ? this.getLineScale() : 1;
                    if (s > 1e-10 && (r.hasFill() || (a = Math.max(a, this.strokeContainThreshold)), 
                    function(t, e, n, i) {
                        return ni(t, e, !0, n, i);
                    }(o, a / s, t, e))) return !0;
                }
                if (r.hasFill()) return function(t, e, n) {
                    return ni(t, 0, !1, e, n);
                }(o, t, e);
            }
            return !1;
        },
        dirty: function(t) {
            null == t && (t = !0), t && (this.__dirtyPath = t, this._rect = null), this.__dirty = this.__dirtyText = !0, 
            this.__zr && this.__zr.refresh(), this.__clipTarget && this.__clipTarget.dirty();
        },
        animateShape: function(t) {
            return this.animate("shape", t);
        },
        attrKV: function(t, e) {
            "shape" === t ? (this.setShape(e), this.__dirtyPath = !0, this._rect = null) : Ke.prototype.attrKV.call(this, t, e);
        },
        setShape: function(t, e) {
            var n = this.shape;
            if (n) {
                if (b(t)) for (var i in t) t.hasOwnProperty(i) && (n[i] = t[i]); else n[t] = e;
                this.dirty(!0);
            }
            return this;
        },
        getLineScale: function() {
            var t = this.transform;
            return t && Wd(t[0] - 1) > 1e-10 && Wd(t[3] - 1) > 1e-10 ? Math.sqrt(Wd(t[0] * t[3] - t[2] * t[1])) : 1;
        }
    }, ii.extend = function(t) {
        var e = function(e) {
            ii.call(this, e), t.style && this.style.extendFrom(t.style, !1);
            var n = t.shape;
            if (n) {
                this.shape = this.shape || {};
                var i = this.shape;
                for (var r in n) !i.hasOwnProperty(r) && n.hasOwnProperty(r) && (i[r] = n[r]);
            }
            t.init && t.init.call(this, e);
        };
        for (var n in h(e, ii), t) "style" !== n && "shape" !== n && (e.prototype[n] = t[n]);
        return e;
    }, h(ii, Ke);
    var Ud = Ed.CMD, Yd = [ [], [], [] ], qd = Math.sqrt, jd = Math.atan2, Zd = function(t, e) {
        var n, i, r, o, a, s = t.data, l = Ud.M, u = Ud.C, h = Ud.L, c = Ud.R, d = Ud.A, f = Ud.Q;
        for (r = 0, o = 0; r < s.length; ) {
            switch (n = s[r++], o = r, i = 0, n) {
              case l:
              case h:
                i = 1;
                break;

              case u:
                i = 3;
                break;

              case f:
                i = 2;
                break;

              case d:
                var p = e[4], g = e[5], m = qd(e[0] * e[0] + e[1] * e[1]), v = qd(e[2] * e[2] + e[3] * e[3]), y = jd(-e[1] / v, e[0] / m);
                s[r] *= m, s[r++] += p, s[r] *= v, s[r++] += g, s[r++] *= m, s[r++] *= v, s[r++] += y, 
                s[r++] += y, o = r += 2;
                break;

              case c:
                x[0] = s[r++], x[1] = s[r++], $(x, x, e), s[o++] = x[0], s[o++] = x[1], x[0] += s[r++], 
                x[1] += s[r++], $(x, x, e), s[o++] = x[0], s[o++] = x[1];
            }
            for (a = 0; i > a; a++) {
                var x;
                (x = Yd[a])[0] = s[r++], x[1] = s[r++], $(x, x, e), s[o++] = x[0], s[o++] = x[1];
            }
        }
    }, Kd = Math.sqrt, $d = Math.sin, Qd = Math.cos, Jd = Math.PI, tf = function(t) {
        return Math.sqrt(t[0] * t[0] + t[1] * t[1]);
    }, ef = function(t, e) {
        return (t[0] * e[0] + t[1] * e[1]) / (tf(t) * tf(e));
    }, nf = function(t, e) {
        return (t[0] * e[1] < t[1] * e[0] ? -1 : 1) * Math.acos(ef(t, e));
    }, rf = /([mlvhzcqtsa])([^mlvhzcqtsa]*)/gi, of = /-?([0-9]*\.)?[0-9]+([eE]-?[0-9]+)?/g, af = function(t) {
        Ke.call(this, t);
    };
    af.prototype = {
        constructor: af,
        type: "text",
        brush: function(t, e) {
            var n = this.style;
            this.__dirty && Be(n), n.fill = n.stroke = n.shadowBlur = n.shadowColor = n.shadowOffsetX = n.shadowOffsetY = null;
            var i = n.text;
            return null != i && (i += ""), Ze(i, n) ? (this.setTransform(t), ze(this, t, i, n, null, e), 
            void this.restoreTransform(t)) : void (t.__attrCachedBy = tc.NONE);
        },
        getBoundingRect: function() {
            var t = this.style;
            if (this.__dirty && Be(t), !this._rect) {
                var e = t.text;
                null != e ? e += "" : e = "";
                var n = we(t.text + "", t.font, t.textAlign, t.textVerticalAlign, t.textPadding, t.textLineHeight, t.rich);
                if (n.x += t.x || 0, n.y += t.y || 0, Ue(t.textStroke, t.textStrokeWidth)) {
                    var i = t.textStrokeWidth;
                    n.x -= i / 2, n.y -= i / 2, n.width += i, n.height += i;
                }
                this._rect = n;
            }
            return this._rect;
        }
    }, h(af, Ke);
    var sf = ii.extend({
        type: "circle",
        shape: {
            cx: 0,
            cy: 0,
            r: 0
        },
        buildPath: function(t, e, n) {
            n && t.moveTo(e.cx + e.r, e.cy), t.arc(e.cx, e.cy, e.r, 0, 2 * Math.PI, !0);
        }
    }), lf = [ [ "shadowBlur", 0 ], [ "shadowColor", "#000" ], [ "shadowOffsetX", 0 ], [ "shadowOffsetY", 0 ] ], uf = function(t) {
        return Bu.browser.ie && Bu.browser.version >= 11 ? function() {
            var e, n = this.__clipPaths, i = this.style;
            if (n) for (var r = 0; r < n.length; r++) {
                var o = n[r], a = o && o.shape, s = o && o.type;
                if (a && ("sector" === s && a.startAngle === a.endAngle || "rect" === s && (!a.width || !a.height))) {
                    for (var l = 0; l < lf.length; l++) lf[l][2] = i[lf[l][0]], i[lf[l][0]] = lf[l][1];
                    e = !0;
                    break;
                }
            }
            if (t.apply(this, arguments), e) for (l = 0; l < lf.length; l++) i[lf[l][0]] = lf[l][2];
        } : t;
    }, hf = ii.extend({
        type: "sector",
        shape: {
            cx: 0,
            cy: 0,
            r0: 0,
            r: 0,
            startAngle: 0,
            endAngle: 2 * Math.PI,
            clockwise: !0
        },
        brush: uf(ii.prototype.brush),
        buildPath: function(t, e) {
            var n = e.cx, i = e.cy, r = Math.max(e.r0 || 0, 0), o = Math.max(e.r, 0), a = e.startAngle, s = e.endAngle, l = e.clockwise, u = Math.cos(a), h = Math.sin(a);
            t.moveTo(u * r + n, h * r + i), t.lineTo(u * o + n, h * o + i), t.arc(n, i, o, a, s, !l), 
            t.lineTo(Math.cos(s) * r + n, Math.sin(s) * r + i), 0 !== r && t.arc(n, i, r, s, a, l), 
            t.closePath();
        }
    }), cf = ii.extend({
        type: "ring",
        shape: {
            cx: 0,
            cy: 0,
            r: 0,
            r0: 0
        },
        buildPath: function(t, e) {
            var n = e.cx, i = e.cy, r = 2 * Math.PI;
            t.moveTo(n + e.r, i), t.arc(n, i, e.r, 0, r, !1), t.moveTo(n + e.r0, i), t.arc(n, i, e.r0, 0, r, !0);
        }
    }), df = function(t, e) {
        for (var n = t.length, i = [], r = 0, o = 1; n > o; o++) r += Z(t[o - 1], t[o]);
        var a = r / 2;
        a = n > a ? n : a;
        for (o = 0; a > o; o++) {
            var s, l, u, h = o / (a - 1) * (e ? n : n - 1), c = Math.floor(h), d = h - c, f = t[c % n];
            e ? (s = t[(c - 1 + n) % n], l = t[(c + 1) % n], u = t[(c + 2) % n]) : (s = t[0 === c ? c : c - 1], 
            l = t[c > n - 2 ? n - 1 : c + 1], u = t[c > n - 3 ? n - 1 : c + 2]);
            var p = d * d, g = d * p;
            i.push([ si(s[0], f[0], l[0], u[0], d, p, g), si(s[1], f[1], l[1], u[1], d, p, g) ]);
        }
        return i;
    }, ff = function(t, e, n, i) {
        var r, o, a, s, l = [], u = [], h = [], c = [];
        if (i) {
            a = [ 1 / 0, 1 / 0 ], s = [ -1 / 0, -1 / 0 ];
            for (var d = 0, f = t.length; f > d; d++) Q(a, a, t[d]), J(s, s, t[d]);
            Q(a, a, i[0]), J(s, s, i[1]);
        }
        for (d = 0, f = t.length; f > d; d++) {
            var p = t[d];
            if (n) r = t[d ? d - 1 : f - 1], o = t[(d + 1) % f]; else {
                if (0 === d || d === f - 1) {
                    l.push(H(t[d]));
                    continue;
                }
                r = t[d - 1], o = t[d + 1];
            }
            X(u, o, r), q(u, u, e);
            var g = Z(p, r), m = Z(p, o), v = g + m;
            0 !== v && (g /= v, m /= v), q(h, u, -g), q(c, u, m);
            var y = G([], p, h), x = G([], p, c);
            i && (J(y, y, a), Q(y, y, s), J(x, x, a), Q(x, x, s)), l.push(y), l.push(x);
        }
        return n && l.push(l.shift()), l;
    }, pf = ii.extend({
        type: "polygon",
        shape: {
            points: null,
            smooth: !1,
            smoothConstraint: null
        },
        buildPath: function(t, e) {
            li(t, e, !0);
        }
    }), gf = ii.extend({
        type: "polyline",
        shape: {
            points: null,
            smooth: !1,
            smoothConstraint: null
        },
        style: {
            stroke: "#000",
            fill: null
        },
        buildPath: function(t, e) {
            li(t, e, !1);
        }
    }), mf = Math.round, vf = {}, yf = ii.extend({
        type: "rect",
        shape: {
            r: 0,
            x: 0,
            y: 0,
            width: 0,
            height: 0
        },
        buildPath: function(t, e) {
            var n, i, r, o;
            this.subPixelOptimize ? (hi(vf, e, this.style), n = vf.x, i = vf.y, r = vf.width, 
            o = vf.height, vf.r = e.r, e = vf) : (n = e.x, i = e.y, r = e.width, o = e.height), 
            e.r ? Ee(t, e) : t.rect(n, i, r, o), t.closePath();
        }
    }), xf = {}, _f = ii.extend({
        type: "line",
        shape: {
            x1: 0,
            y1: 0,
            x2: 0,
            y2: 0,
            percent: 1
        },
        style: {
            stroke: "#000",
            fill: null
        },
        buildPath: function(t, e) {
            var n, i, r, o;
            this.subPixelOptimize ? (ui(xf, e, this.style), n = xf.x1, i = xf.y1, r = xf.x2, 
            o = xf.y2) : (n = e.x1, i = e.y1, r = e.x2, o = e.y2);
            var a = e.percent;
            0 !== a && (t.moveTo(n, i), 1 > a && (r = n * (1 - a) + r * a, o = i * (1 - a) + o * a), 
            t.lineTo(r, o));
        },
        pointAt: function(t) {
            var e = this.shape;
            return [ e.x1 * (1 - t) + e.x2 * t, e.y1 * (1 - t) + e.y2 * t ];
        }
    }), wf = [], bf = ii.extend({
        type: "bezier-curve",
        shape: {
            x1: 0,
            y1: 0,
            x2: 0,
            y2: 0,
            cpx1: 0,
            cpy1: 0,
            percent: 1
        },
        style: {
            stroke: "#000",
            fill: null
        },
        buildPath: function(t, e) {
            var n = e.x1, i = e.y1, r = e.x2, o = e.y2, a = e.cpx1, s = e.cpy1, l = e.cpx2, u = e.cpy2, h = e.percent;
            0 !== h && (t.moveTo(n, i), null == l || null == u ? (1 > h && (Vn(n, a, r, h, wf), 
            a = wf[1], r = wf[2], Vn(i, s, o, h, wf), s = wf[1], o = wf[2]), t.quadraticCurveTo(a, s, r, o)) : (1 > h && (Nn(n, a, l, r, h, wf), 
            a = wf[1], l = wf[2], r = wf[3], Nn(i, s, u, o, h, wf), s = wf[1], u = wf[2], o = wf[3]), 
            t.bezierCurveTo(a, s, l, u, r, o)));
        },
        pointAt: function(t) {
            return di(this.shape, t, !1);
        },
        tangentAt: function(t) {
            var e = di(this.shape, t, !0);
            return j(e, e);
        }
    }), Sf = ii.extend({
        type: "arc",
        shape: {
            cx: 0,
            cy: 0,
            r: 0,
            startAngle: 0,
            endAngle: 2 * Math.PI,
            clockwise: !0
        },
        style: {
            stroke: "#000",
            fill: null
        },
        buildPath: function(t, e) {
            var n = e.cx, i = e.cy, r = Math.max(e.r, 0), o = e.startAngle, a = e.endAngle, s = e.clockwise, l = Math.cos(o), u = Math.sin(o);
            t.moveTo(l * r + n, u * r + i), t.arc(n, i, r, o, a, !s);
        }
    }), Mf = ii.extend({
        type: "compound",
        shape: {
            paths: null
        },
        _updatePathDirty: function() {
            for (var t = this.__dirtyPath, e = this.shape.paths, n = 0; n < e.length; n++) t = t || e[n].__dirtyPath;
            this.__dirtyPath = t, this.__dirty = this.__dirty || t;
        },
        beforeBrush: function() {
            this._updatePathDirty();
            for (var t = this.shape.paths || [], e = this.getGlobalScale(), n = 0; n < t.length; n++) t[n].path || t[n].createPathProxy(), 
            t[n].path.setScale(e[0], e[1], t[n].segmentIgnoreThreshold);
        },
        buildPath: function(t, e) {
            for (var n = e.paths || [], i = 0; i < n.length; i++) n[i].buildPath(t, n[i].shape, !0);
        },
        afterBrush: function() {
            for (var t = this.shape.paths || [], e = 0; e < t.length; e++) t[e].__dirtyPath = !1;
        },
        getBoundingRect: function() {
            return this._updatePathDirty(), ii.prototype.getBoundingRect.call(this);
        }
    }), If = function(t) {
        this.colorStops = t || [];
    };
    If.prototype = {
        constructor: If,
        addColorStop: function(t, e) {
            this.colorStops.push({
                offset: t,
                color: e
            });
        }
    };
    var Tf = function(t, e, n, i, r, o) {
        this.x = null == t ? 0 : t, this.y = null == e ? 0 : e, this.x2 = null == n ? 1 : n, 
        this.y2 = null == i ? 0 : i, this.type = "linear", this.global = o || !1, If.call(this, r);
    };
    Tf.prototype = {
        constructor: Tf
    }, h(Tf, If);
    var Cf = function(t, e, n, i, r) {
        this.x = null == t ? .5 : t, this.y = null == e ? .5 : e, this.r = null == n ? .5 : n, 
        this.type = "radial", this.global = r || !1, If.call(this, i);
    };
    Cf.prototype = {
        constructor: Cf
    }, h(Cf, If), fi.prototype.incremental = !0, fi.prototype.clearDisplaybles = function() {
        this._displayables = [], this._temporaryDisplayables = [], this._cursor = 0, this.dirty(), 
        this.notClear = !1;
    }, fi.prototype.addDisplayable = function(t, e) {
        e ? this._temporaryDisplayables.push(t) : this._displayables.push(t), this.dirty();
    }, fi.prototype.addDisplayables = function(t, e) {
        e = e || !1;
        for (var n = 0; n < t.length; n++) this.addDisplayable(t[n], e);
    }, fi.prototype.eachPendingDisplayable = function(t) {
        for (var e = this._cursor; e < this._displayables.length; e++) t && t(this._displayables[e]);
        for (e = 0; e < this._temporaryDisplayables.length; e++) t && t(this._temporaryDisplayables[e]);
    }, fi.prototype.update = function() {
        this.updateTransform();
        for (var t = this._cursor; t < this._displayables.length; t++) {
            (e = this._displayables[t]).parent = this, e.update(), e.parent = null;
        }
        for (t = 0; t < this._temporaryDisplayables.length; t++) {
            var e;
            (e = this._temporaryDisplayables[t]).parent = this, e.update(), e.parent = null;
        }
    }, fi.prototype.brush = function(t) {
        for (var e = this._cursor; e < this._displayables.length; e++) {
            (n = this._displayables[e]).beforeBrush && n.beforeBrush(t), n.brush(t, e === this._cursor ? null : this._displayables[e - 1]), 
            n.afterBrush && n.afterBrush(t);
        }
        this._cursor = e;
        for (e = 0; e < this._temporaryDisplayables.length; e++) {
            var n;
            (n = this._temporaryDisplayables[e]).beforeBrush && n.beforeBrush(t), n.brush(t, 0 === e ? null : this._temporaryDisplayables[e - 1]), 
            n.afterBrush && n.afterBrush(t);
        }
        this._temporaryDisplayables = [], this.notClear = !0;
    };
    var Df = [];
    fi.prototype.getBoundingRect = function() {
        if (!this._rect) {
            for (var t = new re(1 / 0, 1 / 0, -1 / 0, -1 / 0), e = 0; e < this._displayables.length; e++) {
                var n = this._displayables[e], i = n.getBoundingRect().clone();
                n.needLocalTransform() && i.applyTransform(n.getLocalTransform(Df)), t.union(i);
            }
            this._rect = t;
        }
        return this._rect;
    }, fi.prototype.contain = function(t, e) {
        var n = this.transformCoordToLocal(t, e);
        if (this.getBoundingRect().contain(n[0], n[1])) for (var i = 0; i < this._displayables.length; i++) {
            if (this._displayables[i].contain(t, e)) return !0;
        }
        return !1;
    }, h(fi, Ke);
    var Af = Math.max, kf = Math.min, Pf = {}, Lf = 1, Of = "emphasis", Ef = "normal", Bf = 1, Nf = {}, zf = {}, Rf = function(t, e) {
        for (var n = [], i = t.length, r = 0; i > r; r++) {
            var o = t[r];
            o.path || o.createPathProxy(), o.__dirtyPath && o.buildPath(o.path, o.shape, !0), 
            n.push(o.path);
        }
        var a = new ii(e);
        return a.createPathProxy(), a.buildPath = function(t) {
            t.appendPath(n);
            var e = t.getContext();
            e && t.rebuildPath(e);
        }, a;
    }, Ff = ci, Vf = z(), Hf = 0;
    gi("circle", sf), gi("sector", hf), gi("ring", cf), gi("polygon", pf), gi("polyline", gf), 
    gi("rect", yf), gi("line", _f), gi("bezierCurve", bf), gi("arc", Sf);
    var Gf = (Object.freeze || Object)({
        Z2_EMPHASIS_LIFT: Lf,
        CACHED_LABEL_STYLE_PROPERTIES: {
            color: "textFill",
            textBorderColor: "textStroke",
            textBorderWidth: "textStrokeWidth"
        },
        extendShape: pi,
        extendPath: function(t, e) {
            return function(t, e) {
                return ii.extend(oi(t, e));
            }(t, e);
        },
        registerShape: gi,
        getShapeClass: function(t) {
            return zf.hasOwnProperty(t) ? zf[t] : void 0;
        },
        makePath: mi,
        makeImage: vi,
        mergePath: Rf,
        resizePath: xi,
        subPixelOptimizeLine: function(t) {
            return ui(t.shape, t.shape, t.style), t;
        },
        subPixelOptimizeRect: function(t) {
            return hi(t.shape, t.shape, t.style), t;
        },
        subPixelOptimize: Ff,
        setElementHoverStyle: Ii,
        setHoverStyle: Pi,
        setAsHighDownDispatcher: Li,
        isHighDownDispatcher: Oi,
        getHighlightDigit: Ei,
        setLabelStyle: Bi,
        modifyLabelStyle: function(t, e, n) {
            var i = t.style;
            e && (Hi(i), t.setStyle(e), Vi(i)), i = t.__hoverStl, n && i && (Hi(i), a(i, n), 
            Vi(i));
        },
        setTextStyle: Ni,
        setText: function(t, e, n) {
            var i, r = {
                isRectText: !0
            };
            !1 === n ? i = !0 : r.autoColor = n, zi(t, e, r, i);
        },
        getFont: Gi,
        updateProps: Xi,
        initProps: Ui,
        getTransform: function(t, e) {
            for (var n = yt([]); t && t !== e; ) _t(n, t.getLocalTransform(), n), t = t.parent;
            return n;
        },
        applyTransform: Yi,
        transformDirection: function(t, e, n) {
            var i = 0 === e[4] || 0 === e[5] || 0 === e[0] ? 1 : Math.abs(2 * e[4] / e[0]), r = 0 === e[4] || 0 === e[5] || 0 === e[2] ? 1 : Math.abs(2 * e[4] / e[2]), o = [ "left" === t ? -i : "right" === t ? i : 0, "top" === t ? -r : "bottom" === t ? r : 0 ];
            return o = Yi(o, e, n), Math.abs(o[0]) > Math.abs(o[1]) ? o[0] > 0 ? "right" : "left" : o[1] > 0 ? "bottom" : "top";
        },
        groupTransition: qi,
        clipPointsByRect: function(t, e) {
            return p(t, function(t) {
                var n = t[0];
                n = Af(n, e.x), n = kf(n, e.x + e.width);
                var i = t[1];
                return i = Af(i, e.y), [ n, i = kf(i, e.y + e.height) ];
            });
        },
        clipRectByRect: function(t, e) {
            var n = Af(t.x, e.x), i = kf(t.x + t.width, e.x + e.width), r = Af(t.y, e.y), o = kf(t.y + t.height, e.y + e.height);
            return i >= n && o >= r ? {
                x: n,
                y: r,
                width: i - n,
                height: o - r
            } : void 0;
        },
        createIcon: ji,
        linePolygonIntersect: function(t, e, n, i, r) {
            for (var o = 0, a = r[r.length - 1]; o < r.length; o++) {
                var s = r[o];
                if (Zi(t, e, n, i, s[0], s[1], a[0], a[1])) return !0;
                a = s;
            }
        },
        lineLineIntersect: Zi,
        Group: jh,
        Image: $e,
        Text: af,
        Circle: sf,
        Sector: hf,
        Ring: cf,
        Polygon: pf,
        Polyline: gf,
        Rect: yf,
        Line: _f,
        BezierCurve: bf,
        Arc: Sf,
        IncrementalDisplayable: fi,
        CompoundPath: Mf,
        LinearGradient: Tf,
        RadialGradient: Cf,
        BoundingRect: re
    }), Wf = [ "textStyle", "color" ], Xf = {
        getTextColor: function(t) {
            var e = this.ecModel;
            return this.getShallow("color") || (!t && e ? e.get(Wf) : null);
        },
        getFont: function() {
            return Gi({
                fontStyle: this.getShallow("fontStyle"),
                fontWeight: this.getShallow("fontWeight"),
                fontSize: this.getShallow("fontSize"),
                fontFamily: this.getShallow("fontFamily")
            }, this.ecModel);
        },
        getTextRect: function(t) {
            return we(t, this.getFont(), this.getShallow("align"), this.getShallow("verticalAlign") || this.getShallow("baseline"), this.getShallow("padding"), this.getShallow("lineHeight"), this.getShallow("rich"), this.getShallow("truncateText"));
        }
    }, Uf = Qc([ [ "fill", "color" ], [ "stroke", "borderColor" ], [ "lineWidth", "borderWidth" ], [ "opacity" ], [ "shadowBlur" ], [ "shadowOffsetX" ], [ "shadowOffsetY" ], [ "shadowColor" ], [ "textPosition" ], [ "textAlign" ] ]), Yf = {
        getItemStyle: function(t, e) {
            var n = Uf(this, t, e), i = this.getBorderLineDash();
            return i && (n.lineDash = i), n;
        },
        getBorderLineDash: function() {
            var t = this.get("borderType");
            return "solid" === t || null == t ? null : "dashed" === t ? [ 5, 5 ] : [ 1, 1 ];
        }
    }, qf = c, jf = _n();
    $i.prototype = {
        constructor: $i,
        init: null,
        mergeOption: function(t) {
            r(this.option, t, !0);
        },
        get: function(t, e) {
            return null == t ? this.option : Qi(this.option, this.parsePath(t), !e && Ji(this, t));
        },
        getShallow: function(t, e) {
            var n = this.option, i = null == n ? n : n[t], r = !e && Ji(this, t);
            return null == i && r && (i = r.getShallow(t)), i;
        },
        getModel: function(t, e) {
            var n;
            return new $i(null == t ? this.option : Qi(this.option, t = this.parsePath(t)), e = e || (n = Ji(this, t)) && n.getModel(t), this.ecModel);
        },
        isEmpty: function() {
            return null == this.option;
        },
        restoreData: function() {},
        clone: function() {
            return new (0, this.constructor)(i(this.option));
        },
        setReadOnly: function() {},
        parsePath: function(t) {
            return "string" == typeof t && (t = t.split(".")), t;
        },
        customizeGetParent: function(t) {
            jf(this).getParent = t;
        },
        isAnimationEnabled: function() {
            if (!Bu.node) {
                if (null != this.option.animation) return !!this.option.animation;
                if (this.parentModel) return this.parentModel.isAnimationEnabled();
            }
        }
    }, Tn($i), Cn($i), qf($i, td), qf($i, nd), qf($i, Xf), qf($i, Yf);
    var Zf = 0, Kf = 1e-4, $f = /^(?:(\d{4})(?:[-\/](\d{1,2})(?:[-\/](\d{1,2})(?:[T ](\d{1,2})(?::(\d\d)(?::(\d\d)(?:[.,](\d+))?)?)?(Z|[\+\-]\d\d:?\d\d)?)?)?)?)?$/, Qf = (Object.freeze || Object)({
        linearMap: er,
        parsePercent: nr,
        round: ir,
        asc: function(t) {
            return t.sort(function(t, e) {
                return t - e;
            }), t;
        },
        getPrecision: rr,
        getPrecisionSafe: or,
        getPixelPrecision: ar,
        getPercentWithPrecision: sr,
        MAX_SAFE_INTEGER: 9007199254740991,
        remRadian: lr,
        isRadianAroundZero: ur,
        parseDate: hr,
        quantity: cr,
        quantityExponent: dr,
        nice: fr,
        quantile: function(t, e) {
            var n = (t.length - 1) * e + 1, i = Math.floor(n), r = +t[i - 1], o = n - i;
            return o ? r + o * (t[i] - r) : r;
        },
        reformIntervals: function(t) {
            t.sort(function(t, e) {
                return function t(e, n, i) {
                    return e.interval[i] < n.interval[i] || e.interval[i] === n.interval[i] && (e.close[i] - n.close[i] == (i ? -1 : 1) || !i && t(e, n, 1));
                }(t, e, 0) ? -1 : 1;
            });
            for (var e = -1 / 0, n = 1, i = 0; i < t.length; ) {
                for (var r = t[i].interval, o = t[i].close, a = 0; 2 > a; a++) r[a] <= e && (r[a] = e, 
                o[a] = a ? 1 : 1 - n), e = r[a], n = o[a];
                r[0] === r[1] && o[0] * o[1] != 1 ? t.splice(i, 1) : i++;
            }
            return t;
        },
        isNumeric: function(t) {
            return t - parseFloat(t) >= 0;
        }
    }), Jf = P, tp = /([&<>"'])/g, ep = {
        "&": "&amp;",
        "<": "&lt;",
        ">": "&gt;",
        '"': "&quot;",
        "'": "&#39;"
    }, np = [ "a", "b", "c", "d", "e", "f", "g" ], ip = function(t, e) {
        return "{" + t + (null == e ? "" : e) + "}";
    }, rp = Ie, op = (Object.freeze || Object)({
        addCommas: pr,
        toCamelCase: gr,
        normalizeCssArray: Jf,
        encodeHTML: mr,
        formatTpl: vr,
        formatTplSimple: function(t, e, n) {
            return f(e, function(e, i) {
                t = t.replace("{" + i + "}", n ? mr(e) : e);
            }), t;
        },
        getTooltipMarker: yr,
        formatTime: _r,
        capitalFirst: function(t) {
            return t ? t.charAt(0).toUpperCase() + t.substr(1) : t;
        },
        truncateText: rp,
        getTextBoundingRect: function(t) {
            return we(t.text, t.font, t.textAlign, t.textVerticalAlign, t.textPadding, t.textLineHeight, t.rich, t.truncate);
        },
        getTextRect: function(t, e, n, i, r, o, a, s) {
            return we(t, e, n, i, r, s, o, a);
        },
        windowOpen: wr
    }), ap = f, sp = [ "left", "right", "top", "bottom", "width", "height" ], lp = [ [ "width", "left", "right" ], [ "height", "top", "bottom" ] ], up = br, hp = (y(br, "vertical"), 
    y(br, "horizontal"), {
        getBoxLayoutParams: function() {
            return {
                left: this.get("left"),
                top: this.get("top"),
                right: this.get("right"),
                bottom: this.get("bottom"),
                width: this.get("width"),
                height: this.get("height")
            };
        }
    }), cp = _n(), dp = $i.extend({
        type: "component",
        id: "",
        name: "",
        mainType: "",
        subType: "",
        componentIndex: 0,
        defaultOption: null,
        ecModel: null,
        dependentModels: [],
        uid: null,
        layoutMode: null,
        $constructor: function(t, e, n, i) {
            $i.call(this, t, e, n, i), this.uid = tr("ec_cpt_model");
        },
        init: function(t, e, n) {
            this.mergeDefaultAndTheme(t, n);
        },
        mergeDefaultAndTheme: function(t, e) {
            var n = this.layoutMode, i = n ? Ir(t) : {};
            r(t, e.getTheme().get(this.mainType)), r(t, this.getDefaultOption()), n && Mr(t, i, n);
        },
        mergeOption: function(t) {
            r(this.option, t, !0);
            var e = this.layoutMode;
            e && Mr(this.option, t, e);
        },
        optionUpdated: function() {},
        getDefaultOption: function() {
            var t = cp(this);
            if (!t.defaultOption) {
                for (var e = [], n = this.constructor; n; ) {
                    var i = n.prototype.defaultOption;
                    i && e.push(i), n = n.superClass;
                }
                for (var o = {}, a = e.length - 1; a >= 0; a--) o = r(o, e[a], !0);
                t.defaultOption = o;
            }
            return t.defaultOption;
        },
        getReferringComponents: function(t) {
            return this.ecModel.queryComponents({
                mainType: t,
                index: this.get(t + "Index", !0),
                id: this.get(t + "Id", !0)
            });
        }
    });
    kn(dp, {
        registerWhenExtend: !0
    }), function(t) {
        var e = {};
        t.registerSubTypeDefaulter = function(t, n) {
            t = In(t), e[t.main] = n;
        }, t.determineSubType = function(n, i) {
            var r = i.type;
            if (!r) {
                var o = In(n).main;
                t.hasSubTypes(n) && e[o] && (r = e[o](i));
            }
            return r;
        };
    }(dp), function(t, e) {
        function n(t) {
            var n = {}, r = [];
            return f(t, function(o) {
                var a = i(n, o), s = function(t, e) {
                    var n = [];
                    return f(t, function(t) {
                        u(e, t) >= 0 && n.push(t);
                    }), n;
                }(a.originalDeps = e(o), t);
                a.entryCount = s.length, 0 === a.entryCount && r.push(o), f(s, function(t) {
                    u(a.predecessor, t) < 0 && a.predecessor.push(t);
                    var e = i(n, t);
                    u(e.successor, t) < 0 && e.successor.push(o);
                });
            }), {
                graph: n,
                noEntryList: r
            };
        }
        function i(t, e) {
            return t[e] || (t[e] = {
                predecessor: [],
                successor: []
            }), t[e];
        }
        t.topologicalTravel = function(t, e, i, r) {
            function o(t) {
                l[t].entryCount--, 0 === l[t].entryCount && u.push(t);
            }
            function a(t) {
                h[t] = !0, o(t);
            }
            if (t.length) {
                var s = n(e), l = s.graph, u = s.noEntryList, h = {};
                for (f(t, function(t) {
                    h[t] = !0;
                }); u.length; ) {
                    var c = u.pop(), d = l[c], p = !!h[c];
                    p && (i.call(r, c, d.originalDeps.slice()), delete h[c]), f(d.successor, p ? a : o);
                }
                f(h, function() {
                    throw new Error("Circle dependency may exists");
                });
            }
        };
    }(dp, function(t) {
        var e = [];
        return f(dp.getClassesByMainType(t), function(t) {
            e = e.concat(t.prototype.dependencies || []);
        }), e = p(e, function(t) {
            return In(t).main;
        }), "dataset" !== t && u(e, "dataset") <= 0 && e.unshift("dataset"), e;
    }), c(dp, hp);
    var fp = "";
    "undefined" != typeof navigator && (fp = navigator.platform || "");
    var pp = {
        color: [ "#c23531", "#2f4554", "#61a0a8", "#d48265", "#91c7ae", "#749f83", "#ca8622", "#bda29a", "#6e7074", "#546570", "#c4ccd3" ],
        gradientColor: [ "#f6efa6", "#d88273", "#bf444c" ],
        textStyle: {
            fontFamily: fp.match(/^Win/) ? "Microsoft YaHei" : "sans-serif",
            fontSize: 12,
            fontStyle: "normal",
            fontWeight: "normal"
        },
        blendMode: null,
        animation: "auto",
        animationDuration: 1e3,
        animationDurationUpdate: 300,
        animationEasing: "exponentialOut",
        animationEasingUpdate: "cubicOut",
        animationThreshold: 2e3,
        progressiveThreshold: 3e3,
        progressive: 400,
        hoverLayerThreshold: 3e3,
        useUTC: !1
    }, gp = _n(), mp = {
        clearColorPalette: function() {
            gp(this).colorIdx = 0, gp(this).colorNameMap = {};
        },
        getColorFromPalette: function(t, e, n) {
            var i = gp(e = e || this), r = i.colorIdx || 0, o = i.colorNameMap = i.colorNameMap || {};
            if (o.hasOwnProperty(t)) return o[t];
            var a = fn(this.get("color", !0)), s = this.get("colorLayer", !0), l = null != n && s ? function(t, e) {
                for (var n = t.length, i = 0; n > i; i++) if (t[i].length > e) return t[i];
                return t[n - 1];
            }(s, n) : a;
            if ((l = l || a) && l.length) {
                var u = l[r];
                return t && (o[t] = u), i.colorIdx = (r + 1) % l.length, u;
            }
        }
    }, vp = "original", yp = "arrayRows", xp = "objectRows", _p = "keyedColumns", wp = "unknown", bp = "typedArray", Sp = "column", Mp = "row";
    Tr.seriesDataToSource = function(t) {
        return new Tr({
            data: t,
            sourceFormat: M(t) ? bp : vp,
            fromDataset: !1
        });
    }, Cn(Tr);
    var Ip = {
        Must: 1,
        Might: 2,
        Not: 3
    }, Tp = _n(), Cp = "\0_ec_inner", Dp = $i.extend({
        init: function(t, e, n, i) {
            n = n || {}, this.option = null, this._theme = new $i(n), this._optionManager = i;
        },
        setOption: function(t, e) {
            L(!(Cp in t), "please use chart.getOption()"), this._optionManager.setOption(t, e), 
            this.resetOption(null);
        },
        resetOption: function(t) {
            var e = !1, n = this._optionManager;
            if (!t || "recreate" === t) {
                var i = n.mountOption("recreate" === t);
                this.option && "recreate" !== t ? (this.restoreData(), this.mergeOption(i)) : Br.call(this, i), 
                e = !0;
            }
            if (("timeline" === t || "media" === t) && this.restoreData(), !t || "recreate" === t || "timeline" === t) {
                var r = n.getTimelineOption(this);
                r && (this.mergeOption(r), e = !0);
            }
            if (!t || "recreate" === t || "media" === t) {
                var o = n.getMediaOption(this, this._api);
                o.length && f(o, function(t) {
                    this.mergeOption(t, e = !0);
                }, this);
            }
            return e;
        },
        mergeOption: function(t) {
            var e = this.option, n = this._componentsMap, o = [];
            (function(t) {
                Tp(t).datasetMap = z();
            })(this), f(t, function(t, n) {
                null != t && (dp.hasClass(n) ? n && o.push(n) : e[n] = null == e[n] ? i(t) : r(e[n], t, !0));
            }), dp.topologicalTravel(o, dp.getAllClassMainTypes(), function(i, r) {
                var o = fn(t[i]), s = mn(n.get(i), o);
                (function(t) {
                    var e = z();
                    Wc(t, function(t) {
                        var n = t.exist;
                        n && e.set(n.id, t);
                    }), Wc(t, function(t) {
                        var n = t.option;
                        L(!n || null == n.id || !e.get(n.id) || e.get(n.id) === t, "id duplicates: " + (n && n.id)), 
                        n && null != n.id && e.set(n.id, t), !t.keyInfo && (t.keyInfo = {});
                    }), Wc(t, function(t, n) {
                        var i = t.exist, r = t.option, o = t.keyInfo;
                        if (Xc(r)) {
                            if (o.name = null != r.name ? r.name + "" : i ? i.name : Yc + n, i) o.id = i.id; else if (null != r.id) o.id = r.id + ""; else {
                                var a = 0;
                                do {
                                    o.id = "\0" + o.name + "\0" + a++;
                                } while (e.get(o.id));
                            }
                            e.set(o.id, t);
                        }
                    });
                })(s), f(s, function(t) {
                    var e = t.option;
                    b(e) && (t.keyInfo.mainType = i, t.keyInfo.subType = function(t, e, n) {
                        return e.type ? e.type : n ? n.subType : dp.determineSubType(t, e);
                    }(i, e, t.exist));
                });
                var l = function(t, e) {
                    x(e) || (e = e ? [ e ] : []);
                    var n = {};
                    return f(e, function(e) {
                        n[e] = (t.get(e) || []).slice();
                    }), n;
                }(n, r);
                e[i] = [], n.set(i, []), f(s, function(t, r) {
                    var o = t.exist, s = t.option;
                    if (L(b(s) || o, "Empty component definition"), s) {
                        var u = dp.getClass(i, t.keyInfo.subType, !0);
                        if (o && o.constructor === u) o.name = t.keyInfo.name, o.mergeOption(s, this), o.optionUpdated(s, !1); else {
                            var h = a({
                                dependentModels: l,
                                componentIndex: r
                            }, t.keyInfo);
                            a(o = new u(s, this, this, h), h), o.init(s, this, this, h), o.optionUpdated(null, !0);
                        }
                    } else o.mergeOption({}, this), o.optionUpdated({}, !1);
                    n.get(i)[r] = o, e[i][r] = o.option;
                }, this), "series" === i && Nr(this, n.get("series"));
            }, this), this._seriesIndicesMap = z(this._seriesIndices = this._seriesIndices || []);
        },
        getOption: function() {
            var t = i(this.option);
            return f(t, function(e, n) {
                if (dp.hasClass(n)) {
                    for (var i = (e = fn(e)).length - 1; i >= 0; i--) yn(e[i]) && e.splice(i, 1);
                    t[n] = e;
                }
            }), delete t[Cp], t;
        },
        getTheme: function() {
            return this._theme;
        },
        getComponent: function(t, e) {
            var n = this._componentsMap.get(t);
            return n ? n[e || 0] : void 0;
        },
        queryComponents: function(t) {
            var e = t.mainType;
            if (!e) return [];
            var n, i = t.index, r = t.id, o = t.name, a = this._componentsMap.get(e);
            if (!a || !a.length) return [];
            if (null != i) x(i) || (i = [ i ]), n = m(p(i, function(t) {
                return a[t];
            }), function(t) {
                return !!t;
            }); else if (null != r) {
                var s = x(r);
                n = m(a, function(t) {
                    return s && u(r, t.id) >= 0 || !s && t.id === r;
                });
            } else if (null != o) {
                var l = x(o);
                n = m(a, function(t) {
                    return l && u(o, t.name) >= 0 || !l && t.name === o;
                });
            } else n = a.slice();
            return zr(n, t);
        },
        findComponents: function(t) {
            var e = t.query, n = t.mainType, i = function(t) {
                var e = n + "Index", i = n + "Id", r = n + "Name";
                return !t || null == t[e] && null == t[i] && null == t[r] ? null : {
                    mainType: n,
                    index: t[e],
                    id: t[i],
                    name: t[r]
                };
            }(e);
            return function(e) {
                return t.filter ? m(e, t.filter) : e;
            }(zr(i ? this.queryComponents(i) : this._componentsMap.get(n), t));
        },
        eachComponent: function(t, e, n) {
            var i = this._componentsMap;
            if ("function" == typeof t) n = e, e = t, i.each(function(t, i) {
                f(t, function(t, r) {
                    e.call(n, i, t, r);
                });
            }); else if (w(t)) f(i.get(t), e, n); else if (b(t)) {
                f(this.findComponents(t), e, n);
            }
        },
        getSeriesByName: function(t) {
            return m(this._componentsMap.get("series"), function(e) {
                return e.name === t;
            });
        },
        getSeriesByIndex: function(t) {
            return this._componentsMap.get("series")[t];
        },
        getSeriesByType: function(t) {
            return m(this._componentsMap.get("series"), function(e) {
                return e.subType === t;
            });
        },
        getSeries: function() {
            return this._componentsMap.get("series").slice();
        },
        getSeriesCount: function() {
            return this._componentsMap.get("series").length;
        },
        eachSeries: function(t, e) {
            Rr(this), f(this._seriesIndices, function(n) {
                var i = this._componentsMap.get("series")[n];
                t.call(e, i, n);
            }, this);
        },
        eachRawSeries: function(t, e) {
            f(this._componentsMap.get("series"), t, e);
        },
        eachSeriesByType: function(t, e, n) {
            Rr(this), f(this._seriesIndices, function(i) {
                var r = this._componentsMap.get("series")[i];
                r.subType === t && e.call(n, r, i);
            }, this);
        },
        eachRawSeriesByType: function(t, e, n) {
            return f(this.getSeriesByType(t), e, n);
        },
        isSeriesFiltered: function(t) {
            return Rr(this), null == this._seriesIndicesMap.get(t.componentIndex);
        },
        getCurrentSeriesIndices: function() {
            return (this._seriesIndices || []).slice();
        },
        filterSeries: function(t, e) {
            Rr(this), Nr(this, m(this._componentsMap.get("series"), t, e));
        },
        restoreData: function(t) {
            var e = this._componentsMap;
            Nr(this, e.get("series"));
            var n = [];
            e.each(function(t, e) {
                n.push(e);
            }), dp.topologicalTravel(n, dp.getAllClassMainTypes(), function(n) {
                f(e.get(n), function(e) {
                    ("series" !== n || !function(t, e) {
                        if (e) {
                            var n = e.seiresIndex, i = e.seriesId, r = e.seriesName;
                            return null != n && t.componentIndex !== n || null != i && t.id !== i || null != r && t.name !== r;
                        }
                    }(e, t)) && e.restoreData();
                });
            });
        }
    });
    c(Dp, mp);
    var Ap = [ "getDom", "getZr", "getWidth", "getHeight", "getDevicePixelRatio", "dispatchAction", "isDisposed", "on", "off", "getDataURL", "getConnectedDataURL", "getModel", "getOption", "getViewOfComponentModel", "getViewOfSeriesModel" ], kp = {};
    Vr.prototype = {
        constructor: Vr,
        create: function(t, e) {
            var n = [];
            f(kp, function(i) {
                var r = i.create(t, e);
                n = n.concat(r || []);
            }), this._coordinateSystems = n;
        },
        update: function(t, e) {
            f(this._coordinateSystems, function(n) {
                n.update && n.update(t, e);
            });
        },
        getCoordinateSystems: function() {
            return this._coordinateSystems.slice();
        }
    }, Vr.register = function(t, e) {
        kp[t] = e;
    }, Vr.get = function(t) {
        return kp[t];
    };
    var Pp = f, Lp = i, Op = p, Ep = r, Bp = /^(min|max)?(.+)$/;
    Hr.prototype = {
        constructor: Hr,
        setOption: function(t, e) {
            t && f(fn(t.series), function(t) {
                t && t.data && M(t.data) && E(t.data);
            }), t = Lp(t);
            var n = this._optionBackup, i = Gr.call(this, t, e, !n);
            this._newBaseOption = i.baseOption, n ? (function(t, e) {
                Pp(e = e || {}, function(e, n) {
                    if (null != e) {
                        var i = t[n];
                        if (dp.hasClass(n)) {
                            e = fn(e);
                            var r = mn(i = fn(i), e);
                            t[n] = Op(r, function(t) {
                                return t.option && t.exist ? Ep(t.exist, t.option, !0) : t.exist || t.option;
                            });
                        } else t[n] = Ep(i, e, !0);
                    }
                });
            }(n.baseOption, i.baseOption), i.timelineOptions.length && (n.timelineOptions = i.timelineOptions), 
            i.mediaList.length && (n.mediaList = i.mediaList), i.mediaDefault && (n.mediaDefault = i.mediaDefault)) : this._optionBackup = i;
        },
        mountOption: function(t) {
            var e = this._optionBackup;
            return this._timelineOptions = Op(e.timelineOptions, Lp), this._mediaList = Op(e.mediaList, Lp), 
            this._mediaDefault = Lp(e.mediaDefault), this._currentMediaIndices = [], Lp(t ? e.baseOption : this._newBaseOption);
        },
        getTimelineOption: function(t) {
            var e, n = this._timelineOptions;
            if (n.length) {
                var i = t.getComponent("timeline");
                i && (e = Lp(n[i.getCurrentIndex()], !0));
            }
            return e;
        },
        getMediaOption: function() {
            var t = this._api.getWidth(), e = this._api.getHeight(), n = this._mediaList, i = this._mediaDefault, r = [], o = [];
            if (!n.length && !i) return o;
            for (var a = 0, s = n.length; s > a; a++) Wr(n[a].query, t, e) && r.push(a);
            return !r.length && i && (r = [ -1 ]), r.length && !function(t, e) {
                return t.join(",") === e.join(",");
            }(r, this._currentMediaIndices) && (o = Op(r, function(t) {
                return Lp(-1 === t ? i.option : n[t].option);
            })), this._currentMediaIndices = r, o;
        }
    };
    var Np = f, zp = b, Rp = [ "areaStyle", "lineStyle", "nodeStyle", "linkStyle", "chordStyle", "label", "labelLine" ], Fp = function(t, e) {
        Np(Zr(t.series), function(t) {
            zp(t) && function(t) {
                if (zp(t)) {
                    Xr(t), Yr(t), qr(t, "label"), qr(t, "upperLabel"), qr(t, "edgeLabel"), t.emphasis && (qr(t.emphasis, "label"), 
                    qr(t.emphasis, "upperLabel"), qr(t.emphasis, "edgeLabel")), (n = t.markPoint) && (Xr(n), 
                    jr(n)), (i = t.markLine) && (Xr(i), jr(i));
                    var e = t.markArea;
                    e && jr(e);
                    var n, i, r = t.data;
                    if ("graph" === t.type) {
                        r = r || t.nodes;
                        var o = t.links || t.edges;
                        if (o && !M(o)) for (var a = 0; a < o.length; a++) jr(o[a]);
                        f(t.categories, function(t) {
                            Yr(t);
                        });
                    }
                    if (r && !M(r)) for (a = 0; a < r.length; a++) jr(r[a]);
                    if ((n = t.markPoint) && n.data) {
                        var s = n.data;
                        for (a = 0; a < s.length; a++) jr(s[a]);
                    }
                    if ((i = t.markLine) && i.data) {
                        var l = i.data;
                        for (a = 0; a < l.length; a++) x(l[a]) ? (jr(l[a][0]), jr(l[a][1])) : jr(l[a]);
                    }
                    "gauge" === t.type ? (qr(t, "axisLabel"), qr(t, "title"), qr(t, "detail")) : "treemap" === t.type ? (Ur(t.breadcrumb, "itemStyle"), 
                    f(t.levels, function(t) {
                        Yr(t);
                    })) : "tree" === t.type && Yr(t.leaves);
                }
            }(t);
        });
        var n = [ "xAxis", "yAxis", "radiusAxis", "angleAxis", "singleAxis", "parallelAxis", "radar" ];
        e && n.push("valueAxis", "categoryAxis", "logAxis", "timeAxis"), Np(n, function(e) {
            Np(Zr(t[e]), function(t) {
                t && (qr(t, "axisLabel"), qr(t.axisPointer, "label"));
            });
        }), Np(Zr(t.parallel), function(t) {
            var e = t && t.parallelAxisDefault;
            qr(e, "axisLabel"), qr(e && e.axisPointer, "label");
        }), Np(Zr(t.calendar), function(t) {
            Ur(t, "itemStyle"), qr(t, "dayLabel"), qr(t, "monthLabel"), qr(t, "yearLabel");
        }), Np(Zr(t.radar), function(t) {
            qr(t, "name");
        }), Np(Zr(t.geo), function(t) {
            zp(t) && (jr(t), Np(Zr(t.regions), function(t) {
                jr(t);
            }));
        }), Np(Zr(t.timeline), function(t) {
            jr(t), Ur(t, "label"), Ur(t, "itemStyle"), Ur(t, "controlStyle", !0);
            var e = t.data;
            x(e) && f(e, function(t) {
                b(t) && (Ur(t, "label"), Ur(t, "itemStyle"));
            });
        }), Np(Zr(t.toolbox), function(t) {
            Ur(t, "iconStyle"), Np(t.feature, function(t) {
                Ur(t, "iconStyle");
            });
        }), qr(Kr(t.axisPointer), "label"), qr(Kr(t.tooltip).axisPointer, "label");
    }, Vp = [ [ "x", "left" ], [ "y", "top" ], [ "x2", "right" ], [ "y2", "bottom" ] ], Hp = [ "grid", "geo", "parallel", "legend", "toolbox", "title", "visualMap", "dataZoom", "timeline" ], Gp = function(t, e) {
        Fp(t, e), t.series = fn(t.series), f(t.series, function(t) {
            if (b(t)) {
                var e = t.type;
                if ("line" === e) null != t.clipOverflow && (t.clip = t.clipOverflow); else if ("pie" === e || "gauge" === e) null != t.clockWise && (t.clockwise = t.clockWise); else if ("gauge" === e) {
                    var n = function(t, e) {
                        e = e.split(",");
                        for (var n = t, i = 0; i < e.length && null != (n = n && n[e[i]]); i++) ;
                        return n;
                    }(t, "pointer.color");
                    null != n && function(t, e, n, i) {
                        e = e.split(",");
                        for (var r, o = t, a = 0; a < e.length - 1; a++) null == o[r = e[a]] && (o[r] = {}), 
                        o = o[r];
                        (i || null == o[e[a]]) && (o[e[a]] = n);
                    }(t, "itemStyle.color", n);
                }
                $r(t);
            }
        }), t.dataRange && (t.visualMap = t.dataRange), f(Hp, function(e) {
            var n = t[e];
            n && (x(n) || (n = [ n ]), f(n, function(t) {
                $r(t);
            }));
        });
    }, Wp = Jr.prototype;
    Wp.pure = !1, Wp.persistent = !0, Wp.getSource = function() {
        return this._source;
    };
    var Xp = {
        arrayRows_column: {
            pure: !0,
            count: function() {
                return Math.max(0, this._data.length - this._source.startIndex);
            },
            getItem: function(t) {
                return this._data[t + this._source.startIndex];
            },
            appendData: no
        },
        arrayRows_row: {
            pure: !0,
            count: function() {
                var t = this._data[0];
                return t ? Math.max(0, t.length - this._source.startIndex) : 0;
            },
            getItem: function(t) {
                t += this._source.startIndex;
                for (var e = [], n = this._data, i = 0; i < n.length; i++) {
                    var r = n[i];
                    e.push(r ? r[t] : null);
                }
                return e;
            },
            appendData: function() {
                throw new Error('Do not support appendData when set seriesLayoutBy: "row".');
            }
        },
        objectRows: {
            pure: !0,
            count: to,
            getItem: eo,
            appendData: no
        },
        keyedColumns: {
            pure: !0,
            count: function() {
                var t = this._source.dimensionsDefine[0].name, e = this._data[t];
                return e ? e.length : 0;
            },
            getItem: function(t) {
                for (var e = [], n = this._source.dimensionsDefine, i = 0; i < n.length; i++) {
                    var r = this._data[n[i].name];
                    e.push(r ? r[t] : null);
                }
                return e;
            },
            appendData: function(t) {
                var e = this._data;
                f(t, function(t, n) {
                    for (var i = e[n] || (e[n] = []), r = 0; r < (t || []).length; r++) i.push(t[r]);
                });
            }
        },
        original: {
            count: to,
            getItem: eo,
            appendData: no
        },
        typedArray: {
            persistent: !1,
            pure: !0,
            count: function() {
                return this._data ? this._data.length / this._dimSize : 0;
            },
            getItem: function(t, e) {
                t -= this._offset, e = e || [];
                for (var n = this._dimSize * t, i = 0; i < this._dimSize; i++) e[i] = this._data[n + i];
                return e;
            },
            appendData: function(t) {
                Lu && L(M(t), "Added data must be TypedArray if data in initialization is TypedArray"), 
                this._data = t;
            },
            clean: function() {
                this._offset += this.count(), this._data = null;
            }
        }
    }, Up = {
        arrayRows: io,
        objectRows: function(t, e, n, i) {
            return null != n ? t[i] : t;
        },
        keyedColumns: io,
        original: function(t, e, n) {
            var i = gn(t);
            return null != n && i instanceof Array ? i[n] : i;
        },
        typedArray: io
    }, Yp = {
        arrayRows: ro,
        objectRows: function(t, e) {
            return oo(t[e], this._dimensionInfos[e]);
        },
        keyedColumns: ro,
        original: function(t, e, n, i) {
            var r = t && (null == t.value ? t : t.value);
            return !this._rawData.pure && function(t) {
                return Xc(t) && !(t instanceof Array);
            }(t) && (this.hasItemOption = !0), oo(r instanceof Array ? r[i] : r, this._dimensionInfos[e]);
        },
        typedArray: function(t, e, n, i) {
            return t[i];
        }
    }, qp = /\{@(.+?)\}/g, jp = {
        getDataParams: function(t, e) {
            var n = this.getData(e), i = this.getRawValue(t, e), r = n.getRawIndex(t), o = n.getName(t), a = n.getRawDataItem(t), s = n.getItemVisual(t, "color"), l = n.getItemVisual(t, "borderColor"), u = this.ecModel.getComponent("tooltip"), h = Mn(u && u.get("renderMode")), c = this.mainType, d = "series" === c, f = n.userOutput;
            return {
                componentType: c,
                componentSubType: this.subType,
                componentIndex: this.componentIndex,
                seriesType: d ? this.subType : null,
                seriesIndex: this.seriesIndex,
                seriesId: d ? this.id : null,
                seriesName: d ? this.name : null,
                name: o,
                dataIndex: r,
                data: a,
                dataType: e,
                value: i,
                color: s,
                borderColor: l,
                dimensionNames: f ? f.dimensionNames : null,
                encode: f ? f.encode : null,
                marker: yr({
                    color: s,
                    renderMode: h
                }),
                $vars: [ "seriesName", "name", "value" ]
            };
        },
        getFormattedLabel: function(t, e, n, i, r) {
            e = e || "normal";
            var o = this.getData(n), a = o.getItemModel(t), s = this.getDataParams(t, n);
            null != i && s.value instanceof Array && (s.value = s.value[i]);
            var l = a.get("normal" === e ? [ r || "label", "formatter" ] : [ e, r || "label", "formatter" ]);
            return "function" == typeof l ? (s.status = e, s.dimensionIndex = i, l(s)) : "string" == typeof l ? vr(l, s).replace(qp, function(e, n) {
                var i = n.length;
                return "[" === n.charAt(0) && "]" === n.charAt(i - 1) && (n = +n.slice(1, i - 1)), 
                ao(o, t, n);
            }) : void 0;
        },
        getRawValue: function(t, e) {
            return ao(this.getData(e), t);
        },
        formatTooltip: function() {}
    }, Zp = uo.prototype;
    Zp.perform = function(t) {
        function e(t) {
            return !(t >= 1) && (t = 1), t;
        }
        var n, i = this._upstream, r = t && t.skip;
        if (this._dirty && i) {
            var o = this.context;
            o.data = o.outputData = i.context.outputData;
        }
        this.__pipeline && (this.__pipeline.currentTask = this), this._plan && !r && (n = this._plan(this.context));
        var a, s = e(this._modBy), l = this._modDataCount || 0, u = e(t && t.modBy), h = t && t.modDataCount || 0;
        (s !== u || l !== h) && (n = "reset"), (this._dirty || "reset" === n) && (this._dirty = !1, 
        a = function(t, e) {
            var n, i;
            t._dueIndex = t._outputDueEnd = t._dueEnd = 0, t._settedOutputEnd = null, !e && t._reset && ((n = t._reset(t.context)) && n.progress && (i = n.forceFirstProgress, 
            n = n.progress), x(n) && !n.length && (n = null)), t._progress = n, t._modBy = t._modDataCount = null;
            var r = t._downstream;
            return r && r.dirty(), i;
        }(this, r)), this._modBy = u, this._modDataCount = h;
        var c = t && t.step;
        if (i ? (Lu && L(null != i._outputDueEnd), this._dueEnd = i._outputDueEnd) : (Lu && L(!this._progress || this._count), 
        this._dueEnd = this._count ? this._count(this.context) : 1 / 0), this._progress) {
            var d = this._dueIndex, f = Math.min(null != c ? this._dueIndex + c : 1 / 0, this._dueEnd);
            if (!r && (a || f > d)) {
                var p = this._progress;
                if (x(p)) for (var g = 0; g < p.length; g++) ho(this, p[g], d, f, u, h); else ho(this, p, d, f, u, h);
            }
            this._dueIndex = f;
            var m = null != this._settedOutputEnd ? this._settedOutputEnd : f;
            Lu && L(m >= this._outputDueEnd), this._outputDueEnd = m;
        } else this._dueIndex = this._outputDueEnd = null != this._settedOutputEnd ? this._settedOutputEnd : this._dueEnd;
        return this.unfinished();
    };
    var Kp = function() {
        function t() {
            return n > i ? i++ : null;
        }
        function e() {
            var t = i % a * r + Math.ceil(i / a), e = i >= n ? null : o > t ? t : i;
            return i++, e;
        }
        var n, i, r, o, a, s = {
            reset: function(l, u, h, c) {
                i = l, n = u, r = h, o = c, a = Math.ceil(o / r), s.next = r > 1 && o > 0 ? e : t;
            }
        };
        return s;
    }();
    Zp.dirty = function() {
        this._dirty = !0, this._onDirty && this._onDirty(this.context);
    }, Zp.unfinished = function() {
        return this._progress && this._dueIndex < this._dueEnd;
    }, Zp.pipe = function(t) {
        Lu && L(t && !t._disposed && t !== this), (this._downstream !== t || this._dirty) && (this._downstream = t, 
        t._upstream = this, t.dirty());
    }, Zp.dispose = function() {
        this._disposed || (this._upstream && (this._upstream._downstream = null), this._downstream && (this._downstream._upstream = null), 
        this._dirty = !1, this._disposed = !0);
    }, Zp.getUpstream = function() {
        return this._upstream;
    }, Zp.getDownstream = function() {
        return this._downstream;
    }, Zp.setOutputEnd = function(t) {
        this._outputDueEnd = this._settedOutputEnd = t;
    };
    var $p = _n(), Qp = dp.extend({
        type: "series.__base__",
        seriesIndex: 0,
        coordinateSystem: null,
        defaultOption: null,
        legendVisualProvider: null,
        visualColorAccessPath: "itemStyle.color",
        visualBorderColorAccessPath: "itemStyle.borderColor",
        layoutMode: null,
        init: function(t, e, n) {
            this.seriesIndex = this.componentIndex, this.dataTask = lo({
                count: fo,
                reset: po
            }), this.dataTask.context = {
                model: this
            }, this.mergeDefaultAndTheme(t, n), Cr(this);
            var i = this.getInitialData(t, n);
            mo(i, this), this.dataTask.context.data = i, Lu && L(i, "getInitialData returned invalid data."), 
            $p(this).dataBeforeProcessed = i, co(this);
        },
        mergeDefaultAndTheme: function(t, e) {
            var n = this.layoutMode, i = n ? Ir(t) : {}, o = this.subType;
            dp.hasClass(o) && (o += "Series"), r(t, e.getTheme().get(this.subType)), r(t, this.getDefaultOption()), 
            pn(t, "label", [ "show" ]), this.fillDataTextStyle(t.data), n && Mr(t, i, n);
        },
        mergeOption: function(t, e) {
            t = r(this.option, t, !0), this.fillDataTextStyle(t.data);
            var n = this.layoutMode;
            n && Mr(this.option, t, n), Cr(this);
            var i = this.getInitialData(t, e);
            mo(i, this), this.dataTask.dirty(), this.dataTask.context.data = i, $p(this).dataBeforeProcessed = i, 
            co(this);
        },
        fillDataTextStyle: function(t) {
            if (t && !M(t)) for (var e = [ "show" ], n = 0; n < t.length; n++) t[n] && t[n].label && pn(t[n], "label", e);
        },
        getInitialData: function() {},
        appendData: function(t) {
            this.getRawData().appendData(t.data);
        },
        getData: function(t) {
            var e = yo(this);
            if (e) {
                var n = e.context.data;
                return null == t ? n : n.getLinkedData(t);
            }
            return $p(this).data;
        },
        setData: function(t) {
            var e = yo(this);
            if (e) {
                var n = e.context;
                n.data !== t && e.modifyOutputEnd && e.setOutputEnd(t.count()), n.outputData = t, 
                e !== this.dataTask && (n.data = t);
            }
            $p(this).data = t;
        },
        getSource: function() {
            return function(t) {
                return Tp(t).source;
            }(this);
        },
        getRawData: function() {
            return $p(this).dataBeforeProcessed;
        },
        getBaseAxis: function() {
            var t = this.coordinateSystem;
            return t && t.getBaseAxis && t.getBaseAxis();
        },
        formatTooltip: function(t, e, n, i) {
            var r = this, o = "html" === (i = i || "html") ? "<br/>" : "\n", a = "richText" === i, s = {}, l = 0, u = this.getData(), h = u.mapDimension("defaultedTooltip", !0), c = h.length, d = this.getRawValue(t), p = x(d), m = u.getItemVisual(t, "color");
            b(m) && m.colorStops && (m = (m.colorStops[0] || {}).color), m = m || "transparent";
            var v = (c > 1 || p && !c ? function(n) {
                function o(t, n) {
                    var o = u.getDimensionInfo(n);
                    if (o && !1 !== o.otherDims.tooltip) {
                        var h = o.type, f = "sub" + r.seriesIndex + "at" + l, p = yr({
                            color: m,
                            type: "subItem",
                            renderMode: i,
                            markerId: f
                        }), g = "string" == typeof p ? p : p.content, v = (c ? g + mr(o.displayName || "-") + ": " : "") + mr("ordinal" === h ? t + "" : "time" === h ? e ? "" : _r("yyyy/MM/dd hh:mm:ss", t) : pr(t));
                        v && d.push(v), a && (s[f] = m, ++l);
                    }
                }
                var c = g(n, function(t, e, n) {
                    var i = u.getDimensionInfo(n);
                    return t | (i && !1 !== i.tooltip && null != i.displayName);
                }, 0), d = [];
                h.length ? f(h, function(e) {
                    o(ao(u, t, e), e);
                }) : f(n, o);
                var p = c ? a ? "\n" : "<br/>" : "", v = p + d.join(p || ", ");
                return {
                    renderMode: i,
                    content: v,
                    style: s
                };
            }(d) : function(t) {
                return {
                    renderMode: i,
                    content: mr(pr(t)),
                    style: s
                };
            }(c ? ao(u, t, h[0]) : p ? d[0] : d)).content, y = r.seriesIndex + "at" + l, _ = yr({
                color: m,
                type: "item",
                renderMode: i,
                markerId: y
            });
            s[y] = m, ++l;
            var w = u.getName(t), S = this.name;
            vn(this) || (S = ""), S = S ? mr(S) + (e ? ": " : o) : "";
            var M = "string" == typeof _ ? _ : _.content;
            return {
                html: e ? M + S + v : S + M + (w ? mr(w) + ": " + v : v),
                markers: s
            };
        },
        isAnimationEnabled: function() {
            if (Bu.node) return !1;
            var t = this.getShallow("animation");
            return t && this.getData().count() > this.getShallow("animationThreshold") && (t = !1), 
            t;
        },
        restoreData: function() {
            this.dataTask.dirty();
        },
        getColorFromPalette: function(t, e, n) {
            var i = this.ecModel, r = mp.getColorFromPalette.call(this, t, e, n);
            return r || (r = i.getColorFromPalette(t, e, n)), r;
        },
        coordDimToDataDim: function(t) {
            return this.getRawData().mapDimension(t, !0);
        },
        getProgressive: function() {
            return this.get("progressive");
        },
        getProgressiveThreshold: function() {
            return this.get("progressiveThreshold");
        },
        getAxisTooltipData: null,
        getTooltipPosition: null,
        pipeTask: null,
        preventIncremental: null,
        pipelineContext: null
    });
    c(Qp, jp), c(Qp, mp);
    var Jp = function() {
        this.group = new jh(), this.uid = tr("viewComponent");
    };
    Jp.prototype = {
        constructor: Jp,
        init: function() {},
        render: function() {},
        dispose: function() {},
        filterForExposedEvent: null
    };
    var tg = Jp.prototype;
    tg.updateView = tg.updateLayout = tg.updateVisual = function() {}, Tn(Jp), kn(Jp, {
        registerWhenExtend: !0
    });
    var eg = function() {
        var t = _n();
        return function(e) {
            var n = t(e), i = e.pipelineContext, r = n.large, o = n.progressiveRender, a = n.large = i && i.large, s = n.progressiveRender = i && i.progressiveRender;
            return !!(r ^ a || o ^ s) && "reset";
        };
    }, ng = _n(), ig = eg();
    xo.prototype = {
        type: "chart",
        init: function() {},
        render: function() {},
        highlight: function(t, e, n, i) {
            wo(t.getData(), i, "emphasis");
        },
        downplay: function(t, e, n, i) {
            wo(t.getData(), i, "normal");
        },
        remove: function() {
            this.group.removeAll();
        },
        dispose: function() {},
        incrementalPrepareRender: null,
        incrementalRender: null,
        updateTransform: null,
        filterForExposedEvent: null
    };
    var rg = xo.prototype;
    rg.updateView = rg.updateLayout = rg.updateVisual = function(t, e, n, i) {
        this.render(t, e, n, i);
    }, Tn(xo, [ "dispose" ]), kn(xo, {
        registerWhenExtend: !0
    }), xo.markUpdateMethod = function(t, e) {
        ng(t).updateMethod = e;
    };
    var og = {
        incrementalPrepareRender: {
            progress: function(t, e) {
                e.view.incrementalRender(t, e.model, e.ecModel, e.api, e.payload);
            }
        },
        render: {
            forceFirstProgress: !0,
            progress: function(t, e) {
                e.view.render(e.model, e.ecModel, e.api, e.payload);
            }
        }
    }, ag = "\0__throttleOriginMethod", sg = "\0__throttleRate", lg = "\0__throttleType", ug = {
        createOnAllSeries: !0,
        performRawSeries: !0,
        reset: function(t, e) {
            var n = t.getData(), i = (t.visualColorAccessPath || "itemStyle.color").split("."), r = t.get(i), o = !_(r) || r instanceof If ? null : r;
            (!r || o) && (r = t.getColorFromPalette(t.name, null, e.getSeriesCount())), n.setVisual("color", r);
            var a = (t.visualBorderColorAccessPath || "itemStyle.borderColor").split("."), s = t.get(a);
            if (n.setVisual("borderColor", s), !e.isSeriesFiltered(t)) {
                o && n.each(function(e) {
                    n.setItemVisual(e, "color", o(t.getDataParams(e)));
                });
                return {
                    dataEach: n.hasItemOption ? function(t, e) {
                        var n = t.getItemModel(e), r = n.get(i, !0), o = n.get(a, !0);
                        null != r && t.setItemVisual(e, "color", r), null != o && t.setItemVisual(e, "borderColor", o);
                    } : null
                };
            }
        }
    }, hg = {
        legend: {
            selector: {
                all: "全选",
                inverse: "反选"
            }
        },
        toolbox: {
            brush: {
                title: {
                    rect: "矩形选择",
                    polygon: "圈选",
                    lineX: "横向选择",
                    lineY: "纵向选择",
                    keep: "保持选择",
                    clear: "清除选择"
                }
            },
            dataView: {
                title: "数据视图",
                lang: [ "数据视图", "关闭", "刷新" ]
            },
            dataZoom: {
                title: {
                    zoom: "区域缩放",
                    back: "区域缩放还原"
                }
            },
            magicType: {
                title: {
                    line: "切换为折线图",
                    bar: "切换为柱状图",
                    stack: "切换为堆叠",
                    tiled: "切换为平铺"
                }
            },
            restore: {
                title: "还原"
            },
            saveAsImage: {
                title: "保存为图片",
                lang: [ "右键另存为图片" ]
            }
        },
        series: {
            typeNames: {
                pie: "饼图",
                bar: "柱状图",
                line: "折线图",
                scatter: "散点图",
                effectScatter: "涟漪散点图",
                radar: "雷达图",
                tree: "树图",
                treemap: "矩形树图",
                boxplot: "箱型图",
                candlestick: "K线图",
                k: "K线图",
                heatmap: "热力图",
                map: "地图",
                parallel: "平行坐标图",
                lines: "线图",
                graph: "关系图",
                sankey: "桑基图",
                funnel: "漏斗图",
                gauge: "仪表盘图",
                pictorialBar: "象形柱图",
                themeRiver: "主题河流图",
                sunburst: "旭日图"
            }
        },
        aria: {
            general: {
                withTitle: "这是一个关于“{title}”的图表。",
                withoutTitle: "这是一个图表，"
            },
            series: {
                single: {
                    prefix: "",
                    withName: "图表类型是{seriesType}，表示{seriesName}。",
                    withoutName: "图表类型是{seriesType}。"
                },
                multiple: {
                    prefix: "它由{seriesCount}个图表系列组成。",
                    withName: "第{seriesId}个系列是一个表示{seriesName}的{seriesType}，",
                    withoutName: "第{seriesId}个系列是一个{seriesType}，",
                    separator: {
                        middle: "；",
                        end: "。"
                    }
                }
            },
            data: {
                allData: "其数据是——",
                partialData: "其中，前{displayCnt}项是——",
                withName: "{name}的数据是{value}",
                withoutName: "{value}",
                separator: {
                    middle: "，",
                    end: ""
                }
            }
        }
    }, cg = function(t, e) {
        function n(t, e) {
            if ("string" != typeof t) return t;
            var n = t;
            return f(e, function(t, e) {
                n = n.replace(new RegExp("\\{\\s*" + e + "\\s*\\}", "g"), t);
            }), n;
        }
        function i(t) {
            var e = o.get(t);
            if (null == e) {
                for (var n = t.split("."), i = hg.aria, r = 0; r < n.length; ++r) i = i[n[r]];
                return i;
            }
            return e;
        }
        function r(t) {
            return hg.series.typeNames[t] || "自定义图";
        }
        var o = e.getModel("aria");
        if (o.get("show")) {
            if (o.get("description")) return void t.setAttribute("aria-label", o.get("description"));
            var a = 0;
            e.eachSeries(function() {
                ++a;
            }, this);
            var s, l = o.get("data.maxCount") || 10, u = o.get("series.maxCount") || 10, h = Math.min(a, u);
            if (!(1 > a)) {
                var c = function() {
                    var t = e.getModel("title").option;
                    return t && t.length && (t = t[0]), t && t.text;
                }();
                s = c ? n(i("general.withTitle"), {
                    title: c
                }) : i("general.withoutTitle");
                var d = [];
                s += n(i(a > 1 ? "series.multiple.prefix" : "series.single.prefix"), {
                    seriesCount: a
                }), e.eachSeries(function(t, e) {
                    if (h > e) {
                        var o, s = t.get("name"), u = "series." + (a > 1 ? "multiple" : "single") + ".";
                        o = n(o = i(s ? u + "withName" : u + "withoutName"), {
                            seriesId: t.seriesIndex,
                            seriesName: t.get("name"),
                            seriesType: r(t.subType)
                        });
                        var c = t.getData();
                        window.data = c, o += c.count() > l ? n(i("data.partialData"), {
                            displayCnt: l
                        }) : i("data.allData");
                        for (var f = [], p = 0; p < c.count(); p++) if (l > p) {
                            var g = c.getName(p), m = ao(c, p);
                            f.push(n(i(g ? "data.withName" : "data.withoutName"), {
                                name: g,
                                value: m
                            }));
                        }
                        o += f.join(i("data.separator.middle")) + i("data.separator.end"), d.push(o);
                    }
                }), s += d.join(i("series.multiple.separator.middle")) + i("series.multiple.separator.end"), 
                t.setAttribute("aria-label", s);
            }
        }
    }, dg = Math.PI, fg = Io.prototype;
    fg.restoreData = function(t, e) {
        t.restoreData(e), this._stageTaskMap.each(function(t) {
            var e = t.overallTask;
            e && e.dirty();
        });
    }, fg.getPerformArgs = function(t, e) {
        if (t.__pipeline) {
            var n = this._pipelineMap.get(t.__pipeline.id), i = n.context, r = !e && n.progressiveEnabled && (!i || i.progressiveRender) && t.__idxInPipeline > n.blockIndex ? n.step : null, o = i && i.modDataCount;
            return {
                step: r,
                modBy: null != o ? Math.ceil(o / r) : null,
                modDataCount: o
            };
        }
    }, fg.getPipeline = function(t) {
        return this._pipelineMap.get(t);
    }, fg.updateStreamModes = function(t, e) {
        var n = this._pipelineMap.get(t.uid), i = t.getData().count(), r = n.progressiveEnabled && e.incrementalPrepareRender && i >= n.threshold, o = t.get("large") && i >= t.get("largeThreshold"), a = "mod" === t.get("progressiveChunkMode") ? i : null;
        t.pipelineContext = n.context = {
            progressiveRender: r,
            modDataCount: a,
            large: o
        };
    }, fg.restorePipelines = function(t) {
        var e = this, n = e._pipelineMap = z();
        t.eachSeries(function(t) {
            var i = t.getProgressive(), r = t.uid;
            n.set(r, {
                id: r,
                head: null,
                tail: null,
                threshold: t.getProgressiveThreshold(),
                progressiveEnabled: i && !(t.preventIncremental && t.preventIncremental()),
                blockIndex: -1,
                step: Math.round(i || 700),
                count: 0
            }), Bo(e, t, t.dataTask);
        });
    }, fg.prepareStageTasks = function() {
        var t = this._stageTaskMap, e = this.ecInstance.getModel(), n = this.api;
        f(this._allHandlers, function(i) {
            var r = t.get(i.uid) || t.set(i.uid, []);
            i.reset && function(t, e, n, i, r) {
                function o(n) {
                    var o = n.uid, s = a.get(o) || a.set(o, lo({
                        plan: Po,
                        reset: Lo,
                        count: Eo
                    }));
                    s.context = {
                        model: n,
                        ecModel: i,
                        api: r,
                        useClearVisual: e.isVisual && !e.isLayout,
                        plan: e.plan,
                        reset: e.reset,
                        scheduler: t
                    }, Bo(t, n, s);
                }
                var a = n.seriesTaskMap || (n.seriesTaskMap = z()), s = e.seriesType, l = e.getTargetSeries;
                e.createOnAllSeries ? i.eachRawSeries(o) : s ? i.eachRawSeriesByType(s, o) : l && l(i, r).each(o);
                var u = t._pipelineMap;
                a.each(function(t, e) {
                    u.get(e) || (t.dispose(), a.removeKey(e));
                });
            }(this, i, r, e, n), i.overallReset && function(t, e, n, i, r) {
                function o(e) {
                    var n = e.uid, i = s.get(n);
                    i || (i = s.set(n, lo({
                        reset: Do,
                        onDirty: ko
                    })), a.dirty()), i.context = {
                        model: e,
                        overallProgress: h,
                        modifyOutputEnd: c
                    }, i.agent = a, i.__block = h, Bo(t, e, i);
                }
                var a = n.overallTask = n.overallTask || lo({
                    reset: Co
                });
                a.context = {
                    ecModel: i,
                    api: r,
                    overallReset: e.overallReset,
                    scheduler: t
                };
                var s = a.agentStubMap = a.agentStubMap || z(), l = e.seriesType, u = e.getTargetSeries, h = !0, c = e.modifyOutputEnd;
                l ? i.eachRawSeriesByType(l, o) : u ? u(i, r).each(o) : (h = !1, f(i.getSeries(), o));
                var d = t._pipelineMap;
                s.each(function(t, e) {
                    d.get(e) || (t.dispose(), a.dirty(), s.removeKey(e));
                });
            }(this, i, r, e, n);
        }, this);
    }, fg.prepareView = function(t, e, n, i) {
        var r = t.renderTask, o = r.context;
        o.model = e, o.ecModel = n, o.api = i, r.__block = !t.incrementalPrepareRender, 
        Bo(this, e, r);
    }, fg.performDataProcessorTasks = function(t, e) {
        To(this, this._dataProcessorHandlers, t, e, {
            block: !0
        });
    }, fg.performVisualTasks = function(t, e, n) {
        To(this, this._visualHandlers, t, e, n);
    }, fg.performSeriesTasks = function(t) {
        var e;
        t.eachSeries(function(t) {
            e |= t.dataTask.perform();
        }), this.unfinished |= e;
    }, fg.plan = function() {
        this._pipelineMap.each(function(t) {
            var e = t.tail;
            do {
                if (e.__block) {
                    t.blockIndex = e.__idxInPipeline;
                    break;
                }
                e = e.getUpstream();
            } while (e);
        });
    };
    var pg = fg.updatePayload = function(t, e) {
        "remain" !== e && (t.context.payload = e);
    }, gg = Oo(0);
    Io.wrapStageHandler = function(t, e) {
        return _(t) && (t = {
            overallReset: t,
            seriesType: No(t)
        }), t.uid = tr("stageHandler"), e && (t.visualType = e), t;
    };
    var mg, vg = {}, yg = {};
    zo(vg, Dp), zo(yg, Fr), vg.eachSeriesByType = vg.eachRawSeriesByType = function(t) {
        mg = t;
    }, vg.eachComponent = function(t) {
        "series" === t.mainType && t.subType && (mg = t.subType);
    };
    var xg = [ "#37A2DA", "#32C5E9", "#67E0E3", "#9FE6B8", "#FFDB5C", "#ff9f7f", "#fb7293", "#E062AE", "#E690D1", "#e7bcf3", "#9d96f5", "#8378EA", "#96BFFF" ], _g = {
        color: xg,
        colorLayer: [ [ "#37A2DA", "#ffd85c", "#fd7b5f" ], [ "#37A2DA", "#67E0E3", "#FFDB5C", "#ff9f7f", "#E062AE", "#9d96f5" ], [ "#37A2DA", "#32C5E9", "#9FE6B8", "#FFDB5C", "#ff9f7f", "#fb7293", "#e7bcf3", "#8378EA", "#96BFFF" ], xg ]
    }, wg = "#eee", bg = function() {
        return {
            axisLine: {
                lineStyle: {
                    color: wg
                }
            },
            axisTick: {
                lineStyle: {
                    color: wg
                }
            },
            axisLabel: {
                textStyle: {
                    color: wg
                }
            },
            splitLine: {
                lineStyle: {
                    type: "dashed",
                    color: "#aaa"
                }
            },
            splitArea: {
                areaStyle: {
                    color: wg
                }
            }
        };
    }, Sg = [ "#dd6b66", "#759aa0", "#e69d87", "#8dc1a9", "#ea7e53", "#eedd78", "#73a373", "#73b9bc", "#7289ab", "#91ca8c", "#f49f42" ], Mg = {
        color: Sg,
        backgroundColor: "#333",
        tooltip: {
            axisPointer: {
                lineStyle: {
                    color: wg
                },
                crossStyle: {
                    color: wg
                },
                label: {
                    color: "#000"
                }
            }
        },
        legend: {
            textStyle: {
                color: wg
            }
        },
        textStyle: {
            color: wg
        },
        title: {
            textStyle: {
                color: wg
            }
        },
        toolbox: {
            iconStyle: {
                normal: {
                    borderColor: wg
                }
            }
        },
        dataZoom: {
            textStyle: {
                color: wg
            }
        },
        visualMap: {
            textStyle: {
                color: wg
            }
        },
        timeline: {
            lineStyle: {
                color: wg
            },
            itemStyle: {
                normal: {
                    color: Sg[1]
                }
            },
            label: {
                normal: {
                    textStyle: {
                        color: wg
                    }
                }
            },
            controlStyle: {
                normal: {
                    color: wg,
                    borderColor: wg
                }
            }
        },
        timeAxis: bg(),
        logAxis: bg(),
        valueAxis: bg(),
        categoryAxis: bg(),
        line: {
            symbol: "circle"
        },
        graph: {
            color: Sg
        },
        gauge: {
            title: {
                textStyle: {
                    color: wg
                }
            }
        },
        candlestick: {
            itemStyle: {
                normal: {
                    color: "#FD1050",
                    color0: "#0CF49B",
                    borderColor: "#FD1050",
                    borderColor0: "#0CF49B"
                }
            }
        }
    };
    Mg.categoryAxis.splitLine.show = !1, dp.extend({
        type: "dataset",
        defaultOption: {
            seriesLayoutBy: Sp,
            sourceHeader: null,
            dimensions: null,
            source: null
        },
        optionUpdated: function() {
            !function(t) {
                var e = t.option.source, n = wp;
                if (M(e)) n = bp; else if (x(e)) {
                    0 === e.length && (n = yp);
                    for (var i = 0, r = e.length; r > i; i++) {
                        var o = e[i];
                        if (null != o) {
                            if (x(o)) {
                                n = yp;
                                break;
                            }
                            if (b(o)) {
                                n = xp;
                                break;
                            }
                        }
                    }
                } else if (b(e)) {
                    for (var a in e) if (e.hasOwnProperty(a) && d(e[a])) {
                        n = _p;
                        break;
                    }
                } else if (null != e) throw new Error("Invalid data");
                Tp(t).sourceFormat = n;
            }(this);
        }
    }), Jp.extend({
        type: "dataset"
    });
    var Ig = ii.extend({
        type: "ellipse",
        shape: {
            cx: 0,
            cy: 0,
            rx: 0,
            ry: 0
        },
        buildPath: function(t, e) {
            var n = .5522848, i = e.cx, r = e.cy, o = e.rx, a = e.ry, s = o * n, l = a * n;
            t.moveTo(i - o, r), t.bezierCurveTo(i - o, r - l, i - s, r - a, i, r - a), t.bezierCurveTo(i + s, r - a, i + o, r - l, i + o, r), 
            t.bezierCurveTo(i + o, r + l, i + s, r + a, i, r + a), t.bezierCurveTo(i - s, r + a, i - o, r + l, i - o, r), 
            t.closePath();
        }
    }), Tg = /[\s,]+/;
    Fo.prototype.parse = function(t, e) {
        e = e || {};
        var n = Ro(t);
        if (!n) throw new Error("Illegal svg");
        var i = new jh();
        this._root = i;
        var r, o, a = n.getAttribute("viewBox") || "", s = parseFloat(n.getAttribute("width") || e.width), l = parseFloat(n.getAttribute("height") || e.height);
        isNaN(s) && (s = null), isNaN(l) && (l = null), Go(n, i, null, !0);
        for (var u = n.firstChild; u; ) this._parseNode(u, i), u = u.nextSibling;
        if (a) {
            var h = O(a).split(Tg);
            h.length >= 4 && (r = {
                x: parseFloat(h[0] || 0),
                y: parseFloat(h[1] || 0),
                width: parseFloat(h[2]),
                height: parseFloat(h[3])
            });
        }
        if (r && null != s && null != l && (o = function(t, e, n) {
            var i = e / t.width, r = n / t.height, o = Math.min(i, r);
            return {
                scale: [ o, o ],
                position: [ -(t.x + t.width / 2) * o + e / 2, -(t.y + t.height / 2) * o + n / 2 ]
            };
        }(r, s, l), !e.ignoreViewBox)) {
            var c = i;
            (i = new jh()).add(c), c.scale = o.scale.slice(), c.position = o.position.slice();
        }
        return e.ignoreRootClip || null == s || null == l || i.setClipPath(new yf({
            shape: {
                x: 0,
                y: 0,
                width: s,
                height: l
            }
        })), {
            root: i,
            width: s,
            height: l,
            viewBoxRect: r,
            viewBoxTransform: o
        };
    }, Fo.prototype._parseNode = function(t, e) {
        var n, i, r = t.nodeName.toLowerCase();
        if ("defs" === r ? this._isDefine = !0 : "text" === r && (this._isText = !0), this._isDefine) {
            if (i = Dg[r]) {
                var o = i.call(this, t), a = t.getAttribute("id");
                a && (this._defs[a] = o);
            }
        } else (i = Cg[r]) && (n = i.call(this, t, e), e.add(n));
        for (var s = t.firstChild; s; ) 1 === s.nodeType && this._parseNode(s, n), 3 === s.nodeType && this._isText && this._parseText(s, n), 
        s = s.nextSibling;
        "defs" === r ? this._isDefine = !1 : "text" === r && (this._isText = !1);
    }, Fo.prototype._parseText = function(t, e) {
        if (1 === t.nodeType) {
            var n = t.getAttribute("dx") || 0, i = t.getAttribute("dy") || 0;
            this._textX += parseFloat(n), this._textY += parseFloat(i);
        }
        var r = new af({
            style: {
                text: t.textContent,
                transformText: !0
            },
            position: [ this._textX || 0, this._textY || 0 ]
        });
        Vo(e, r), Go(t, r, this._defs);
        var o = r.style.fontSize;
        o && 9 > o && (r.style.fontSize = 9, r.scale = r.scale || [ 1, 1 ], r.scale[0] *= o / 9, 
        r.scale[1] *= o / 9);
        var a = r.getBoundingRect();
        return this._textX += a.width, e.add(r), r;
    };
    var Cg = {
        g: function(t, e) {
            var n = new jh();
            return Vo(e, n), Go(t, n, this._defs), n;
        },
        rect: function(t, e) {
            var n = new yf();
            return Vo(e, n), Go(t, n, this._defs), n.setShape({
                x: parseFloat(t.getAttribute("x") || 0),
                y: parseFloat(t.getAttribute("y") || 0),
                width: parseFloat(t.getAttribute("width") || 0),
                height: parseFloat(t.getAttribute("height") || 0)
            }), n;
        },
        circle: function(t, e) {
            var n = new sf();
            return Vo(e, n), Go(t, n, this._defs), n.setShape({
                cx: parseFloat(t.getAttribute("cx") || 0),
                cy: parseFloat(t.getAttribute("cy") || 0),
                r: parseFloat(t.getAttribute("r") || 0)
            }), n;
        },
        line: function(t, e) {
            var n = new _f();
            return Vo(e, n), Go(t, n, this._defs), n.setShape({
                x1: parseFloat(t.getAttribute("x1") || 0),
                y1: parseFloat(t.getAttribute("y1") || 0),
                x2: parseFloat(t.getAttribute("x2") || 0),
                y2: parseFloat(t.getAttribute("y2") || 0)
            }), n;
        },
        ellipse: function(t, e) {
            var n = new Ig();
            return Vo(e, n), Go(t, n, this._defs), n.setShape({
                cx: parseFloat(t.getAttribute("cx") || 0),
                cy: parseFloat(t.getAttribute("cy") || 0),
                rx: parseFloat(t.getAttribute("rx") || 0),
                ry: parseFloat(t.getAttribute("ry") || 0)
            }), n;
        },
        polygon: function(t, e) {
            var n = t.getAttribute("points");
            n && (n = Ho(n));
            var i = new pf({
                shape: {
                    points: n || []
                }
            });
            return Vo(e, i), Go(t, i, this._defs), i;
        },
        polyline: function(t, e) {
            var n = new ii();
            Vo(e, n), Go(t, n, this._defs);
            var i = t.getAttribute("points");
            return i && (i = Ho(i)), new gf({
                shape: {
                    points: i || []
                }
            });
        },
        image: function(t, e) {
            var n = new $e();
            return Vo(e, n), Go(t, n, this._defs), n.setStyle({
                image: t.getAttribute("xlink:href"),
                x: t.getAttribute("x"),
                y: t.getAttribute("y"),
                width: t.getAttribute("width"),
                height: t.getAttribute("height")
            }), n;
        },
        text: function(t, e) {
            var n = t.getAttribute("x") || 0, i = t.getAttribute("y") || 0, r = t.getAttribute("dx") || 0, o = t.getAttribute("dy") || 0;
            this._textX = parseFloat(n) + parseFloat(r), this._textY = parseFloat(i) + parseFloat(o);
            var a = new jh();
            return Vo(e, a), Go(t, a, this._defs), a;
        },
        tspan: function(t, e) {
            var n = t.getAttribute("x"), i = t.getAttribute("y");
            null != n && (this._textX = parseFloat(n)), null != i && (this._textY = parseFloat(i));
            var r = t.getAttribute("dx") || 0, o = t.getAttribute("dy") || 0, a = new jh();
            return Vo(e, a), Go(t, a, this._defs), this._textX += r, this._textY += o, a;
        },
        path: function(t, e) {
            var n = ai(t.getAttribute("d") || "");
            return Vo(e, n), Go(t, n, this._defs), n;
        }
    }, Dg = {
        lineargradient: function(t) {
            var e = parseInt(t.getAttribute("x1") || 0, 10), n = parseInt(t.getAttribute("y1") || 0, 10), i = parseInt(t.getAttribute("x2") || 10, 10), r = parseInt(t.getAttribute("y2") || 0, 10), o = new Tf(e, n, i, r);
            return function(t, e) {
                for (var n = t.firstChild; n; ) {
                    if (1 === n.nodeType) {
                        var i = n.getAttribute("offset");
                        i = i.indexOf("%") > 0 ? parseInt(i, 10) / 100 : i ? parseFloat(i) : 0;
                        var r = n.getAttribute("stop-color") || "#000000";
                        e.addColorStop(i, r);
                    }
                    n = n.nextSibling;
                }
            }(t, o), o;
        },
        radialgradient: function() {}
    }, Ag = {
        fill: "fill",
        stroke: "stroke",
        "stroke-width": "lineWidth",
        opacity: "opacity",
        "fill-opacity": "fillOpacity",
        "stroke-opacity": "strokeOpacity",
        "stroke-dasharray": "lineDash",
        "stroke-dashoffset": "lineDashOffset",
        "stroke-linecap": "lineCap",
        "stroke-linejoin": "lineJoin",
        "stroke-miterlimit": "miterLimit",
        "font-family": "fontFamily",
        "font-size": "fontSize",
        "font-style": "fontStyle",
        "font-weight": "fontWeight",
        "text-align": "textAlign",
        "alignment-baseline": "textBaseline"
    }, kg = /url\(\s*#(.*?)\)/, Pg = /(translate|scale|rotate|skewX|skewY|matrix)\(([\-\s0-9\.e,]*)\)/g, Lg = /([^\s:;]+)\s*:\s*([^:;]+)/g, Og = z(), Eg = {
        registerMap: function(t, e, n) {
            var i;
            return x(e) ? i = e : e.svg ? i = [ {
                type: "svg",
                source: e.svg,
                specialAreas: e.specialAreas
            } ] : (e.geoJson && !e.features && (n = e.specialAreas, e = e.geoJson), i = [ {
                type: "geoJSON",
                source: e,
                specialAreas: n
            } ]), f(i, function(t) {
                var e = t.type;
                "geoJson" === e && (e = t.type = "geoJSON");
                var n = Bg[e];
                Lu && L(n, "Illegal map type: " + e), n(t);
            }), Og.set(t, i);
        },
        retrieveMap: function(t) {
            return Og.get(t);
        }
    }, Bg = {
        geoJSON: function(t) {
            var e = t.source;
            t.geoJSON = w(e) ? "undefined" != typeof JSON && JSON.parse ? JSON.parse(e) : new Function("return (" + e + ");")() : e;
        },
        svg: function(t) {
            t.svgXML = Ro(t.source);
        }
    }, Ng = L, zg = f, Rg = _, Fg = b, Vg = dp.parseClassType, Hg = "4.9.0", Gg = {
        zrender: "4.3.2"
    }, Wg = 1e3, Xg = 1e3, Ug = 3e3, Yg = {
        PROCESSOR: {
            FILTER: Wg,
            SERIES_FILTER: 800,
            STATISTIC: 5e3
        },
        VISUAL: {
            LAYOUT: Xg,
            PROGRESSIVE_LAYOUT: 1100,
            GLOBAL: 2e3,
            CHART: Ug,
            POST_CHART_LAYOUT: 3500,
            COMPONENT: 4e3,
            BRUSH: 5e3
        }
    }, qg = "__flagInMainProcess", jg = "__optionUpdated", Zg = /^[a-zA-Z0-9_]+$/;
    Uo.prototype.on = Xo("on", !0), Uo.prototype.off = Xo("off", !0), Uo.prototype.one = Xo("one", !0), 
    c(Uo, ih);
    var Kg = Yo.prototype;
    Kg._onframe = function() {
        if (!this._disposed) {
            var t = this._scheduler;
            if (this[jg]) {
                var e = this[jg].silent;
                this[qg] = !0, jo(this), $g.update.call(this), this[qg] = !1, this[jg] = !1, Qo.call(this, e), 
                Jo.call(this, e);
            } else if (t.unfinished) {
                var n = 1, i = this._model;
                this._api;
                t.unfinished = !1;
                do {
                    var r = +new Date();
                    t.performSeriesTasks(i), t.performDataProcessorTasks(i), Ko(this, i), t.performVisualTasks(i), 
                    ia(this, this._model, 0, "remain"), n -= +new Date() - r;
                } while (n > 0 && t.unfinished);
                t.unfinished || this._zr.flush();
            }
        }
    }, Kg.getDom = function() {
        return this._dom;
    }, Kg.getZr = function() {
        return this._zr;
    }, Kg.setOption = function(t, e, n) {
        if (Lu && Ng(!this[qg], "`setOption` should not be called during main process."), 
        this._disposed) oa(this.id); else {
            var i;
            if (Fg(e) && (n = e.lazyUpdate, i = e.silent, e = e.notMerge), this[qg] = !0, !this._model || e) {
                var r = new Hr(this._api), o = this._theme, a = this._model = new Dp();
                a.scheduler = this._scheduler, a.init(null, null, o, r);
            }
            this._model.setOption(t, nm), n ? (this[jg] = {
                silent: i
            }, this[qg] = !1) : (jo(this), $g.update.call(this), this._zr.flush(), this[jg] = !1, 
            this[qg] = !1, Qo.call(this, i), Jo.call(this, i));
        }
    }, Kg.setTheme = function() {
        console.error("ECharts#setTheme() is DEPRECATED in ECharts 3.0");
    }, Kg.getModel = function() {
        return this._model;
    }, Kg.getOption = function() {
        return this._model && this._model.getOption();
    }, Kg.getWidth = function() {
        return this._zr.getWidth();
    }, Kg.getHeight = function() {
        return this._zr.getHeight();
    }, Kg.getDevicePixelRatio = function() {
        return this._zr.painter.dpr || window.devicePixelRatio || 1;
    }, Kg.getRenderedCanvas = function(t) {
        if (Bu.canvasSupported) return (t = t || {}).pixelRatio = t.pixelRatio || 1, t.backgroundColor = t.backgroundColor || this._model.get("backgroundColor"), 
        this._zr.painter.getRenderedCanvas(t);
    }, Kg.getSvgDataURL = function() {
        if (Bu.svgSupported) {
            var t = this._zr;
            return f(t.storage.getDisplayList(), function(t) {
                t.stopAnimation(!0);
            }), t.painter.toDataURL();
        }
    }, Kg.getDataURL = function(t) {
        if (!this._disposed) {
            var e = (t = t || {}).excludeComponents, n = this._model, i = [], r = this;
            zg(e, function(t) {
                n.eachComponent({
                    mainType: t
                }, function(t) {
                    var e = r._componentsMap[t.__viewId];
                    e.group.ignore || (i.push(e), e.group.ignore = !0);
                });
            });
            var o = "svg" === this._zr.painter.getType() ? this.getSvgDataURL() : this.getRenderedCanvas(t).toDataURL("image/" + (t && t.type || "png"));
            return zg(i, function(t) {
                t.group.ignore = !1;
            }), o;
        }
        oa(this.id);
    }, Kg.getConnectedDataURL = function(t) {
        if (this._disposed) oa(this.id); else if (Bu.canvasSupported) {
            var e = "svg" === t.type, n = this.group, r = Math.min, o = Math.max, a = 1 / 0;
            if (lm[n]) {
                var s = a, l = a, u = -a, h = -a, c = [], d = t && t.pixelRatio || 1;
                f(sm, function(a) {
                    if (a.group === n) {
                        var d = e ? a.getZr().painter.getSvgDom().innerHTML : a.getRenderedCanvas(i(t)), f = a.getDom().getBoundingClientRect();
                        s = r(f.left, s), l = r(f.top, l), u = o(f.right, u), h = o(f.bottom, h), c.push({
                            dom: d,
                            left: f.left,
                            top: f.top
                        });
                    }
                });
                var p = (u *= d) - (s *= d), g = (h *= d) - (l *= d), m = Yu(), v = dn(m, {
                    renderer: e ? "svg" : "canvas"
                });
                if (v.resize({
                    width: p,
                    height: g
                }), e) {
                    var y = "";
                    return zg(c, function(t) {
                        var e = t.left - s, n = t.top - l;
                        y += '<g transform="translate(' + e + "," + n + ')">' + t.dom + "</g>";
                    }), v.painter.getSvgRoot().innerHTML = y, t.connectedBackgroundColor && v.painter.setBackgroundColor(t.connectedBackgroundColor), 
                    v.refreshImmediately(), v.painter.toDataURL();
                }
                return t.connectedBackgroundColor && v.add(new yf({
                    shape: {
                        x: 0,
                        y: 0,
                        width: p,
                        height: g
                    },
                    style: {
                        fill: t.connectedBackgroundColor
                    }
                })), zg(c, function(t) {
                    var e = new $e({
                        style: {
                            x: t.left * d - s,
                            y: t.top * d - l,
                            image: t.dom
                        }
                    });
                    v.add(e);
                }), v.refreshImmediately(), m.toDataURL("image/" + (t && t.type || "png"));
            }
            return this.getDataURL(t);
        }
    }, Kg.convertToPixel = y(qo, "convertToPixel"), Kg.convertFromPixel = y(qo, "convertFromPixel"), 
    Kg.containPixel = function(t, e) {
        var n;
        if (!this._disposed) return f(t = wn(this._model, t), function(t, i) {
            i.indexOf("Models") >= 0 && f(t, function(t) {
                var r = t.coordinateSystem;
                if (r && r.containPoint) n |= !!r.containPoint(e); else if ("seriesModels" === i) {
                    var o = this._chartsMap[t.__viewId];
                    o && o.containPoint ? n |= o.containPoint(e, t) : Lu && console.warn(i + ": " + (o ? "The found component do not support containPoint." : "No view mapping to the found component."));
                } else Lu && console.warn(i + ": containPoint is not supported");
            }, this);
        }, this), !!n;
        oa(this.id);
    }, Kg.getVisual = function(t, e) {
        var n = (t = wn(this._model, t, {
            defaultMainType: "series"
        })).seriesModel;
        Lu && (n || console.warn("There is no specified seires model"));
        var i = n.getData(), r = t.hasOwnProperty("dataIndexInside") ? t.dataIndexInside : t.hasOwnProperty("dataIndex") ? i.indexOfRawIndex(t.dataIndex) : null;
        return null != r ? i.getItemVisual(r, e) : i.getVisual(e);
    }, Kg.getViewOfComponentModel = function(t) {
        return this._componentsMap[t.__viewId];
    }, Kg.getViewOfSeriesModel = function(t) {
        return this._chartsMap[t.__viewId];
    };
    var $g = {
        prepareAndUpdate: function(t) {
            jo(this), $g.update.call(this, t);
        },
        update: function(t) {
            var e = this._model, n = this._api, i = this._zr, r = this._coordSysMgr, o = this._scheduler;
            if (e) {
                o.restoreData(e, t), o.performSeriesTasks(e), r.create(e, n), o.performDataProcessorTasks(e, t), 
                Ko(this, e), r.update(e, n), ea(e), o.performVisualTasks(e, t), na(this, e, n, t);
                var a = e.get("backgroundColor") || "transparent";
                if (Bu.canvasSupported) i.setBackgroundColor(a); else {
                    var s = Nt(a);
                    a = Wt(s, "rgb"), 0 === s[3] && (a = "transparent");
                }
                ra(e, n);
            }
        },
        updateTransform: function(t) {
            var e = this._model, n = this, i = this._api;
            if (e) {
                var r = [];
                e.eachComponent(function(o, a) {
                    var s = n.getViewOfComponentModel(a);
                    if (s && s.__alive) if (s.updateTransform) {
                        var l = s.updateTransform(a, e, i, t);
                        l && l.update && r.push(s);
                    } else r.push(s);
                });
                var o = z();
                e.eachSeries(function(r) {
                    var a = n._chartsMap[r.__viewId];
                    if (a.updateTransform) {
                        var s = a.updateTransform(r, e, i, t);
                        s && s.update && o.set(r.uid, 1);
                    } else o.set(r.uid, 1);
                }), ea(e), this._scheduler.performVisualTasks(e, t, {
                    setDirty: !0,
                    dirtyMap: o
                }), ia(n, e, 0, t, o), ra(e, this._api);
            }
        },
        updateView: function(t) {
            var e = this._model;
            e && (xo.markUpdateMethod(t, "updateView"), ea(e), this._scheduler.performVisualTasks(e, t, {
                setDirty: !0
            }), na(this, this._model, this._api, t), ra(e, this._api));
        },
        updateVisual: function(t) {
            $g.update.call(this, t);
        },
        updateLayout: function(t) {
            $g.update.call(this, t);
        }
    };
    Kg.resize = function(t) {
        if (Lu && Ng(!this[qg], "`resize` should not be called during main process."), this._disposed) oa(this.id); else {
            this._zr.resize(t);
            var e = this._model;
            if (this._loadingFX && this._loadingFX.resize(), e) {
                var n = e.resetOption("media"), i = t && t.silent;
                this[qg] = !0, n && jo(this), $g.update.call(this), this[qg] = !1, Qo.call(this, i), 
                Jo.call(this, i);
            }
        }
    }, Kg.showLoading = function(t, e) {
        if (this._disposed) oa(this.id); else if (Fg(t) && (e = t, t = ""), t = t || "default", 
        this.hideLoading(), am[t]) {
            var n = am[t](this._api, e), i = this._zr;
            this._loadingFX = n, i.add(n);
        } else Lu && console.warn("Loading effects " + t + " not exists.");
    }, Kg.hideLoading = function() {
        return this._disposed ? void oa(this.id) : (this._loadingFX && this._zr.remove(this._loadingFX), 
        void (this._loadingFX = null));
    }, Kg.makeActionFromEvent = function(t) {
        var e = a({}, t);
        return e.type = tm[t.type], e;
    }, Kg.dispatchAction = function(t, e) {
        if (this._disposed) oa(this.id); else if (Fg(e) || (e = {
            silent: !!e
        }), Jg[t.type] && this._model) {
            if (this[qg]) return void this._pendingActions.push(t);
            $o.call(this, t, e.silent), e.flush ? this._zr.flush(!0) : !1 !== e.flush && Bu.browser.weChat && this._throttledZrFlush(), 
            Qo.call(this, e.silent), Jo.call(this, e.silent);
        }
    }, Kg.appendData = function(t) {
        if (this._disposed) oa(this.id); else {
            var e = t.seriesIndex, n = this.getModel().getSeriesByIndex(e);
            Lu && Ng(t.data && n), n.appendData(t), this._scheduler.unfinished = !0;
        }
    }, Kg.on = Xo("on", !1), Kg.off = Xo("off", !1), Kg.one = Xo("one", !1);
    var Qg = [ "click", "dblclick", "mouseover", "mouseout", "mousemove", "mousedown", "mouseup", "globalout", "contextmenu" ];
    Kg._initEvents = function() {
        zg(Qg, function(t) {
            var e = function(e) {
                var n, i = this.getModel(), r = e.target, o = "globalout" === t;
                if (o) n = {}; else if (r && null != r.dataIndex) {
                    var s = r.dataModel || i.getSeriesByIndex(r.seriesIndex);
                    n = s && s.getDataParams(r.dataIndex, r.dataType, r) || {};
                } else r && r.eventData && (n = a({}, r.eventData));
                if (n) {
                    var l = n.componentType, u = n.componentIndex;
                    ("markLine" === l || "markPoint" === l || "markArea" === l) && (l = "series", u = n.seriesIndex);
                    var h = l && null != u && i.getComponent(l, u), c = h && this["series" === h.mainType ? "_chartsMap" : "_componentsMap"][h.__viewId];
                    Lu && (o || h && c || console.warn("model or view can not be found by params")), 
                    n.event = e, n.type = t, this._ecEventProcessor.eventInfo = {
                        targetEl: r,
                        packedEvent: n,
                        model: h,
                        view: c
                    }, this.trigger(t, n);
                }
            };
            e.zrEventfulCallAtLast = !0, this._zr.on(t, e, this);
        }, this), zg(tm, function(t, e) {
            this._messageCenter.on(e, function(t) {
                this.trigger(e, t);
            }, this);
        }, this);
    }, Kg.isDisposed = function() {
        return this._disposed;
    }, Kg.clear = function() {
        return this._disposed ? void oa(this.id) : void this.setOption({
            series: []
        }, !0);
    }, Kg.dispose = function() {
        if (this._disposed) oa(this.id); else {
            this._disposed = !0, Sn(this.getDom(), cm, "");
            var t = this._api, e = this._model;
            zg(this._componentsViews, function(n) {
                n.dispose(e, t);
            }), zg(this._chartsViews, function(n) {
                n.dispose(e, t);
            }), this._zr.dispose(), delete sm[this.id];
        }
    }, c(Yo, ih), la.prototype = {
        constructor: la,
        normalizeQuery: function(t) {
            var e = {}, n = {}, i = {};
            if (w(t)) {
                var r = Vg(t);
                e.mainType = r.main || null, e.subType = r.sub || null;
            } else {
                var o = [ "Index", "Name", "Id" ], a = {
                    name: 1,
                    dataIndex: 1,
                    dataType: 1
                };
                f(t, function(t, r) {
                    for (var s = !1, l = 0; l < o.length; l++) {
                        var u = o[l], h = r.lastIndexOf(u);
                        if (h > 0 && h === r.length - u.length) {
                            var c = r.slice(0, h);
                            "data" !== c && (e.mainType = c, e[u.toLowerCase()] = t, s = !0);
                        }
                    }
                    a.hasOwnProperty(r) && (n[r] = t, s = !0), s || (i[r] = t);
                });
            }
            return {
                cptQuery: e,
                dataQuery: n,
                otherQuery: i
            };
        },
        filter: function(t, e) {
            function n(t, e, n, i) {
                return null == t[n] || e[i || n] === t[n];
            }
            var i = this.eventInfo;
            if (!i) return !0;
            var r = i.targetEl, o = i.packedEvent, a = i.model, s = i.view;
            if (!a || !s) return !0;
            var l = e.cptQuery, u = e.dataQuery;
            return n(l, a, "mainType") && n(l, a, "subType") && n(l, a, "index", "componentIndex") && n(l, a, "name") && n(l, a, "id") && n(u, o, "name") && n(u, o, "dataIndex") && n(u, o, "dataType") && (!s.filterForExposedEvent || s.filterForExposedEvent(t, e.otherQuery, r, o));
        },
        afterTrigger: function() {
            this.eventInfo = null;
        }
    };
    var Jg = {}, tm = {}, em = [], nm = [], im = [], rm = [], om = {}, am = {}, sm = {}, lm = {}, um = new Date() - 0, hm = new Date() - 0, cm = "_echarts_instance_", dm = ua;
    ma(2e3, ug), da(Gp), fa(900, function(t) {
        var e = z();
        t.eachSeries(function(t) {
            var n = t.get("stack");
            if (n) {
                var i = e.get(n) || e.set(n, []), r = t.getData(), o = {
                    stackResultDimension: r.getCalculationInfo("stackResultDimension"),
                    stackedOverDimension: r.getCalculationInfo("stackedOverDimension"),
                    stackedDimension: r.getCalculationInfo("stackedDimension"),
                    stackedByDimension: r.getCalculationInfo("stackedByDimension"),
                    isStackedByIndex: r.getCalculationInfo("isStackedByIndex"),
                    data: r,
                    seriesModel: t
                };
                if (!o.stackedDimension || !o.isStackedByIndex && !o.stackedByDimension) return;
                i.length && r.setCalculationInfo("stackedOnSeries", i[i.length - 1].seriesModel), 
                i.push(o);
            }
        }), e.each(Qr);
    }), ya("default", function(t, e) {
        s(e = e || {}, {
            text: "loading",
            textColor: "#000",
            fontSize: "12px",
            maskColor: "rgba(255, 255, 255, 0.8)",
            showSpinner: !0,
            color: "#c23531",
            spinnerRadius: 10,
            lineWidth: 5,
            zlevel: 0
        });
        var n = new jh(), i = new yf({
            style: {
                fill: e.maskColor
            },
            zlevel: e.zlevel,
            z: 1e4
        });
        n.add(i);
        var r = e.fontSize + " sans-serif", o = new yf({
            style: {
                fill: "none",
                text: e.text,
                font: r,
                textPosition: "right",
                textDistance: 10,
                textFill: e.textColor
            },
            zlevel: e.zlevel,
            z: 10001
        });
        if (n.add(o), e.showSpinner) {
            var a = new Sf({
                shape: {
                    startAngle: -dg / 2,
                    endAngle: -dg / 2 + .1,
                    r: e.spinnerRadius
                },
                style: {
                    stroke: e.color,
                    lineCap: "round",
                    lineWidth: e.lineWidth
                },
                zlevel: e.zlevel,
                z: 10001
            });
            a.animateShape(!0).when(1e3, {
                endAngle: 3 * dg / 2
            }).start("circularInOut"), a.animateShape(!0).when(1e3, {
                startAngle: 3 * dg / 2
            }).delay(300).start("circularInOut"), n.add(a);
        }
        return n.resize = function() {
            var n = _e(e.text, r), s = e.showSpinner ? e.spinnerRadius : 0, l = (t.getWidth() - 2 * s - (e.showSpinner && n ? 10 : 0) - n) / 2 - (e.showSpinner ? 0 : n / 2), u = t.getHeight() / 2;
            e.showSpinner && a.setShape({
                cx: l,
                cy: u
            }), o.setShape({
                x: l - s,
                y: u - s,
                width: 2 * s,
                height: 2 * s
            }), i.setShape({
                x: 0,
                y: 0,
                width: t.getWidth(),
                height: t.getHeight()
            });
        }, n.resize(), n;
    }), pa({
        type: "highlight",
        event: "highlight",
        update: "highlight"
    }, R), pa({
        type: "downplay",
        event: "downplay",
        update: "downplay"
    }, R), ca("light", _g), ca("dark", Mg);
    Ma.prototype = {
        constructor: Ma,
        add: function(t) {
            return this._add = t, this;
        },
        update: function(t) {
            return this._update = t, this;
        },
        remove: function(t) {
            return this._remove = t, this;
        },
        execute: function() {
            var t = this._old, e = this._new, n = {}, i = [], r = [];
            for (Ia(t, {}, i, "_oldKeyGetter", this), Ia(e, n, r, "_newKeyGetter", this), o = 0; o < t.length; o++) {
                if (null != (s = n[a = i[o]])) (u = s.length) ? (1 === u && (n[a] = null), s = s.shift()) : n[a] = null, 
                this._update && this._update(s, o); else this._remove && this._remove(o);
            }
            for (var o = 0; o < r.length; o++) {
                var a = r[o];
                if (n.hasOwnProperty(a)) {
                    var s;
                    if (null == (s = n[a])) continue;
                    if (s.length) for (var l = 0, u = s.length; u > l; l++) this._add && this._add(s[l]); else this._add && this._add(s);
                }
            }
        }
    };
    var fm = z([ "tooltip", "label", "itemName", "itemId", "seriesName" ]), pm = b, gm = "undefined", mm = -1, vm = "e\0\0", ym = {
        float: ("undefined" == typeof Float64Array ? "undefined" : t(Float64Array)) === gm ? Array : Float64Array,
        int: ("undefined" == typeof Int32Array ? "undefined" : t(Int32Array)) === gm ? Array : Int32Array,
        ordinal: Array,
        number: Array,
        time: Array
    }, xm = ("undefined" == typeof Uint32Array ? "undefined" : t(Uint32Array)) === gm ? Array : Uint32Array, _m = ("undefined" == typeof Int32Array ? "undefined" : t(Int32Array)) === gm ? Array : Int32Array, wm = ("undefined" == typeof Uint16Array ? "undefined" : t(Uint16Array)) === gm ? Array : Uint16Array, bm = [ "hasItemOption", "_nameList", "_idList", "_invertedIndicesMap", "_rawData", "_chunkSize", "_chunkCount", "_dimValueGetter", "_count", "_rawCount", "_nameDimIdx", "_idDimIdx" ], Sm = [ "_extent", "_approximateExtent", "_rawExtent" ], Mm = function(t, e) {
        t = t || [ "x", "y" ];
        for (var n = {}, i = [], r = {}, o = 0; o < t.length; o++) {
            var a = t[o];
            w(a) ? a = new Ca({
                name: a
            }) : a instanceof Ca || (a = new Ca(a));
            var s = a.name;
            a.type = a.type || "float", a.coordDim || (a.coordDim = s, a.coordDimIndex = 0), 
            a.otherDims = a.otherDims || {}, i.push(s), n[s] = a, a.index = o, a.createInvertedIndices && (r[s] = []);
        }
        this.dimensions = i, this._dimensionInfos = n, this.hostModel = e, this.dataType, 
        this._indices = null, this._count = 0, this._rawCount = 0, this._storage = {}, this._nameList = [], 
        this._idList = [], this._optionModels = [], this._visual = {}, this._layout = {}, 
        this._itemVisuals = [], this.hasItemVisual = {}, this._itemLayouts = [], this._graphicEls = [], 
        this._chunkSize = 1e5, this._chunkCount = 0, this._rawData, this._rawExtent = {}, 
        this._extent = {}, this._approximateExtent = {}, this._dimensionsSummary = function(t) {
            var e = {}, n = e.encode = {}, i = z(), r = [], o = [], a = e.userOutput = {
                dimensionNames: t.dimensions.slice(),
                encode: {}
            };
            f(t.dimensions, function(e) {
                var s = t.getDimensionInfo(e), l = s.coordDim;
                if (l) {
                    Lu && L(null == fm.get(l));
                    var u = s.coordDimIndex;
                    Ta(n, l)[u] = e, s.isExtraCoord || (i.set(l, 1), function(t) {
                        return !("ordinal" === t || "time" === t);
                    }(s.type) && (r[0] = e), Ta(a.encode, l)[u] = s.index), s.defaultTooltip && o.push(e);
                }
                fm.each(function(t, e) {
                    var i = Ta(n, e), r = s.otherDims[e];
                    null != r && !1 !== r && (i[r] = s.name);
                });
            });
            var s = [], l = {};
            i.each(function(t, e) {
                var i = n[e];
                l[e] = i[0], s = s.concat(i);
            }), e.dataDimsOnCoord = s, e.encodeFirstDimNotExtra = l;
            var u = n.label;
            u && u.length && (r = u.slice());
            var h = n.tooltip;
            return h && h.length ? o = h.slice() : o.length || (o = r.slice()), n.defaultedLabel = r, 
            n.defaultedTooltip = o, e;
        }(this), this._invertedIndicesMap = r, this._calculationInfo = {}, this.userOutput = this._dimensionsSummary.userOutput;
    }, Im = Mm.prototype;
    Im.type = "list", Im.hasItemOption = !0, Im.getDimension = function(t) {
        return ("number" == typeof t || !isNaN(t) && !this._dimensionInfos.hasOwnProperty(t)) && (t = this.dimensions[t]), 
        t;
    }, Im.getDimensionInfo = function(t) {
        return this._dimensionInfos[this.getDimension(t)];
    }, Im.getDimensionsOnCoord = function() {
        return this._dimensionsSummary.dataDimsOnCoord.slice();
    }, Im.mapDimension = function(t, e) {
        var n = this._dimensionsSummary;
        if (null == e) return n.encodeFirstDimNotExtra[t];
        var i = n.encode[t];
        return !0 === e ? (i || []).slice() : i && i[e];
    }, Im.initData = function(t, e, n) {
        var i = Tr.isInstance(t) || d(t);
        if (i && (t = new Jr(t, this.dimensions.length)), Lu && !i && ("function" != typeof t.getItem || "function" != typeof t.count)) throw new Error("Inavlid data provider.");
        this._rawData = t, this._storage = {}, this._indices = null, this._nameList = e || [], 
        this._idList = [], this._nameRepeatCount = {}, n || (this.hasItemOption = !1), this.defaultDimValueGetter = Yp[this._rawData.getSource().sourceFormat], 
        this._dimValueGetter = n = n || this.defaultDimValueGetter, this._dimValueGetterArrayRows = Yp.arrayRows, 
        this._rawExtent = {}, this._initDataFromProvider(0, t.count()), t.pure && (this.hasItemOption = !1);
    }, Im.getProvider = function() {
        return this._rawData;
    }, Im.appendData = function(t) {
        Lu && L(!this._indices, "appendData can only be called on raw data.");
        var e = this._rawData, n = this.count();
        e.appendData(t);
        var i = e.count();
        e.persistent || (i += n), this._initDataFromProvider(n, i);
    }, Im.appendValues = function(t, e) {
        for (var n = this._chunkSize, i = this._storage, r = this.dimensions, o = r.length, a = this._rawExtent, s = this.count(), l = s + Math.max(t.length, e ? e.length : 0), u = this._chunkCount, h = 0; o > h; h++) {
            a[v = r[h]] || (a[v] = [ 1 / 0, -1 / 0 ]), i[v] || (i[v] = []), Pa(i, this._dimensionInfos[v], n, u, l), 
            this._chunkCount = i[v].length;
        }
        for (var c = new Array(o), d = s; l > d; d++) {
            for (var f = d - s, p = Math.floor(d / n), g = d % n, m = 0; o > m; m++) {
                var v = r[m], y = this._dimValueGetterArrayRows(t[f] || c, v, f, m);
                i[v][p][g] = y;
                var x = a[v];
                y < x[0] && (x[0] = y), y > x[1] && (x[1] = y);
            }
            e && (this._nameList[d] = e[f]);
        }
        this._rawCount = this._count = l, this._extent = {}, La(this);
    }, Im._initDataFromProvider = function(t, e) {
        if (!(t >= e)) {
            for (var n, i = this._chunkSize, r = this._rawData, o = this._storage, a = this.dimensions, s = a.length, l = this._dimensionInfos, u = this._nameList, h = this._idList, c = this._rawExtent, d = this._nameRepeatCount = {}, f = this._chunkCount, p = 0; s > p; p++) {
                c[w = a[p]] || (c[w] = [ 1 / 0, -1 / 0 ]);
                var g = l[w];
                0 === g.otherDims.itemName && (n = this._nameDimIdx = p), 0 === g.otherDims.itemId && (this._idDimIdx = p), 
                o[w] || (o[w] = []), Pa(o, g, i, f, e), this._chunkCount = o[w].length;
            }
            for (var m = new Array(s), v = t; e > v; v++) {
                m = r.getItem(v, m);
                for (var y = Math.floor(v / i), x = v % i, _ = 0; s > _; _++) {
                    var w, b = o[w = a[_]][y], S = this._dimValueGetter(m, w, v, _);
                    b[x] = S;
                    var M = c[w];
                    S < M[0] && (M[0] = S), S > M[1] && (M[1] = S);
                }
                if (!r.pure) {
                    var I = u[v];
                    if (m && null == I) if (null != m.name) u[v] = I = m.name; else if (null != n) {
                        var T = a[n], C = o[T][y];
                        if (C) {
                            I = C[x];
                            var D = l[T].ordinalMeta;
                            D && D.categories.length && (I = D.categories[I]);
                        }
                    }
                    var A = null == m ? null : m.id;
                    null == A && null != I && (d[I] = d[I] || 0, A = I, d[I] > 0 && (A += "__ec__" + d[I]), 
                    d[I]++), null != A && (h[v] = A);
                }
            }
            !r.persistent && r.clean && r.clean(), this._rawCount = this._count = e, this._extent = {}, 
            La(this);
        }
    }, Im.count = function() {
        return this._count;
    }, Im.getIndices = function() {
        var t = this._indices;
        if (t) {
            var e = t.constructor, n = this._count;
            if (e === Array) {
                r = new e(n);
                for (var i = 0; n > i; i++) r[i] = t[i];
            } else r = new e(t.buffer, 0, n);
        } else {
            var r = new (e = Da(this))(this.count());
            for (i = 0; i < r.length; i++) r[i] = i;
        }
        return r;
    }, Im.get = function(t, e) {
        if (!(e >= 0 && e < this._count)) return NaN;
        var n = this._storage;
        if (!n[t]) return NaN;
        e = this.getRawIndex(e);
        var i = Math.floor(e / this._chunkSize), r = e % this._chunkSize;
        return n[t][i][r];
    }, Im.getByRawIndex = function(t, e) {
        if (!(e >= 0 && e < this._rawCount)) return NaN;
        var n = this._storage[t];
        if (!n) return NaN;
        var i = Math.floor(e / this._chunkSize), r = e % this._chunkSize;
        return n[i][r];
    }, Im._getFast = function(t, e) {
        var n = Math.floor(e / this._chunkSize), i = e % this._chunkSize;
        return this._storage[t][n][i];
    }, Im.getValues = function(t, e) {
        var n = [];
        x(t) || (e = t, t = this.dimensions);
        for (var i = 0, r = t.length; r > i; i++) n.push(this.get(t[i], e));
        return n;
    }, Im.hasValue = function(t) {
        for (var e = this._dimensionsSummary.dataDimsOnCoord, n = 0, i = e.length; i > n; n++) if (isNaN(this.get(e[n], t))) return !1;
        return !0;
    }, Im.getDataExtent = function(t) {
        t = this.getDimension(t);
        var e = [ 1 / 0, -1 / 0 ];
        if (!this._storage[t]) return e;
        var n, i = this.count();
        if (!this._indices) return this._rawExtent[t].slice();
        if (n = this._extent[t]) return n.slice();
        for (var r = (n = e)[0], o = n[1], a = 0; i > a; a++) {
            var s = this._getFast(t, this.getRawIndex(a));
            r > s && (r = s), s > o && (o = s);
        }
        return n = [ r, o ], this._extent[t] = n, n;
    }, Im.getApproximateExtent = function(t) {
        return t = this.getDimension(t), this._approximateExtent[t] || this.getDataExtent(t);
    }, Im.setApproximateExtent = function(t, e) {
        e = this.getDimension(e), this._approximateExtent[e] = t.slice();
    }, Im.getCalculationInfo = function(t) {
        return this._calculationInfo[t];
    }, Im.setCalculationInfo = function(t, e) {
        pm(t) ? a(this._calculationInfo, t) : this._calculationInfo[t] = e;
    }, Im.getSum = function(t) {
        var e = 0;
        if (this._storage[t]) for (var n = 0, i = this.count(); i > n; n++) {
            var r = this.get(t, n);
            isNaN(r) || (e += r);
        }
        return e;
    }, Im.getMedian = function(t) {
        var e = [];
        this.each(t, function(t) {
            isNaN(t) || e.push(t);
        });
        var n = [].concat(e).sort(function(t, e) {
            return t - e;
        }), i = this.count();
        return 0 === i ? 0 : i % 2 == 1 ? n[(i - 1) / 2] : (n[i / 2] + n[i / 2 - 1]) / 2;
    }, Im.rawIndexOf = function(t, e) {
        var n = t && this._invertedIndicesMap[t];
        if (Lu && !n) throw new Error("Do not supported yet");
        var i = n[e];
        return null == i || isNaN(i) ? mm : i;
    }, Im.indexOfName = function(t) {
        for (var e = 0, n = this.count(); n > e; e++) if (this.getName(e) === t) return e;
        return -1;
    }, Im.indexOfRawIndex = function(t) {
        if (t >= this._rawCount || 0 > t) return -1;
        if (!this._indices) return t;
        var e = this._indices, n = e[t];
        if (null != n && n < this._count && n === t) return t;
        for (var i = 0, r = this._count - 1; r >= i; ) {
            var o = (i + r) / 2 | 0;
            if (e[o] < t) i = o + 1; else {
                if (!(e[o] > t)) return o;
                r = o - 1;
            }
        }
        return -1;
    }, Im.indicesOfNearest = function(t, e, n) {
        var i = [];
        if (!this._storage[t]) return i;
        null == n && (n = 1 / 0);
        for (var r = 1 / 0, o = -1, a = 0, s = 0, l = this.count(); l > s; s++) {
            var u = e - this.get(t, s), h = Math.abs(u);
            n >= h && ((r > h || h === r && u >= 0 && 0 > o) && (r = h, o = u, a = 0), u === o && (i[a++] = s));
        }
        return i.length = a, i;
    }, Im.getRawIndex = Ea, Im.getRawDataItem = function(t) {
        if (this._rawData.persistent) return this._rawData.getItem(this.getRawIndex(t));
        for (var e = [], n = 0; n < this.dimensions.length; n++) {
            var i = this.dimensions[n];
            e.push(this.get(i, t));
        }
        return e;
    }, Im.getName = function(t) {
        var e = this.getRawIndex(t);
        return this._nameList[e] || Oa(this, this._nameDimIdx, e) || "";
    }, Im.getId = function(t) {
        return Na(this, this.getRawIndex(t));
    }, Im.each = function(t, e, n, i) {
        if (this._count) {
            "function" == typeof t && (i = n, n = e, e = t, t = []), n = n || i || this, t = p(za(t), this.getDimension, this), 
            Lu && Ra(this, t);
            for (var r = t.length, o = 0; o < this.count(); o++) switch (r) {
              case 0:
                e.call(n, o);
                break;

              case 1:
                e.call(n, this.get(t[0], o), o);
                break;

              case 2:
                e.call(n, this.get(t[0], o), this.get(t[1], o), o);
                break;

              default:
                for (var a = 0, s = []; r > a; a++) s[a] = this.get(t[a], o);
                s[a] = o, e.apply(n, s);
            }
        }
    }, Im.filterSelf = function(t, e, n, i) {
        if (this._count) {
            "function" == typeof t && (i = n, n = e, e = t, t = []), n = n || i || this, t = p(za(t), this.getDimension, this), 
            Lu && Ra(this, t);
            for (var r = this.count(), o = new (Da(this))(r), a = [], s = t.length, l = 0, u = t[0], h = 0; r > h; h++) {
                var c, d = this.getRawIndex(h);
                if (0 === s) c = e.call(n, h); else if (1 === s) {
                    var f = this._getFast(u, d);
                    c = e.call(n, f, h);
                } else {
                    for (var g = 0; s > g; g++) a[g] = this._getFast(u, d);
                    a[g] = h, c = e.apply(n, a);
                }
                c && (o[l++] = d);
            }
            return r > l && (this._indices = o), this._count = l, this._extent = {}, this.getRawIndex = this._indices ? Ba : Ea, 
            this;
        }
    }, Im.selectRange = function(t) {
        if (this._count) {
            var e = [];
            for (var n in t) t.hasOwnProperty(n) && e.push(n);
            Lu && Ra(this, e);
            var i = e.length;
            if (i) {
                var r = this.count(), o = new (Da(this))(r), a = 0, s = e[0], l = t[s][0], u = t[s][1], h = !1;
                if (!this._indices) {
                    var c = 0;
                    if (1 === i) {
                        for (var d = this._storage[e[0]], f = 0; f < this._chunkCount; f++) for (var p = d[f], g = Math.min(this._count - f * this._chunkSize, this._chunkSize), m = 0; g > m; m++) {
                            ((w = p[m]) >= l && u >= w || isNaN(w)) && (o[a++] = c), c++;
                        }
                        h = !0;
                    } else if (2 === i) {
                        d = this._storage[s];
                        var v = this._storage[e[1]], y = t[e[1]][0], x = t[e[1]][1];
                        for (f = 0; f < this._chunkCount; f++) {
                            p = d[f];
                            var _ = v[f];
                            for (g = Math.min(this._count - f * this._chunkSize, this._chunkSize), m = 0; g > m; m++) {
                                var w = p[m], b = _[m];
                                (w >= l && u >= w || isNaN(w)) && (b >= y && x >= b || isNaN(b)) && (o[a++] = c), 
                                c++;
                            }
                        }
                        h = !0;
                    }
                }
                if (!h) if (1 === i) for (m = 0; r > m; m++) {
                    var S = this.getRawIndex(m);
                    ((w = this._getFast(s, S)) >= l && u >= w || isNaN(w)) && (o[a++] = S);
                } else for (m = 0; r > m; m++) {
                    var M = !0;
                    for (S = this.getRawIndex(m), f = 0; i > f; f++) {
                        var I = e[f];
                        ((w = this._getFast(n, S)) < t[I][0] || w > t[I][1]) && (M = !1);
                    }
                    M && (o[a++] = this.getRawIndex(m));
                }
                return r > a && (this._indices = o), this._count = a, this._extent = {}, this.getRawIndex = this._indices ? Ba : Ea, 
                this;
            }
        }
    }, Im.mapArray = function(t, e, n, i) {
        "function" == typeof t && (i = n, n = e, e = t, t = []), n = n || i || this;
        var r = [];
        return this.each(t, function() {
            r.push(e && e.apply(this, arguments));
        }, n), r;
    }, Im.map = function(e, n, i, r) {
        i = i || r || this, e = p(za(e), this.getDimension, this), Lu && Ra(this, e);
        var o = Fa(this, e);
        o._indices = this._indices, o.getRawIndex = o._indices ? Ba : Ea;
        for (var a = o._storage, s = [], l = this._chunkSize, u = e.length, h = this.count(), c = [], d = o._rawExtent, f = 0; h > f; f++) {
            for (var g = 0; u > g; g++) c[g] = this.get(e[g], f);
            c[u] = f;
            var m = n && n.apply(i, c);
            if (null != m) {
                "object" != t(m) && (s[0] = m, m = s);
                for (var v = this.getRawIndex(f), y = Math.floor(v / l), x = v % l, _ = 0; _ < m.length; _++) {
                    var w = e[_], b = m[_], S = d[w], M = a[w];
                    M && (M[y][x] = b), b < S[0] && (S[0] = b), b > S[1] && (S[1] = b);
                }
            }
        }
        return o;
    }, Im.downSample = function(t, e, n, i) {
        for (var r = Fa(this, [ t ]), o = r._storage, a = [], s = Math.floor(1 / e), l = o[t], u = this.count(), h = this._chunkSize, c = r._rawExtent[t], d = new (Da(this))(u), f = 0, p = 0; u > p; p += s) {
            s > u - p && (s = u - p, a.length = s);
            for (var g = 0; s > g; g++) {
                var m = this.getRawIndex(p + g), v = Math.floor(m / h), y = m % h;
                a[g] = l[v][y];
            }
            var x = n(a), _ = this.getRawIndex(Math.min(p + i(a, x) || 0, u - 1)), w = _ % h;
            l[Math.floor(_ / h)][w] = x, x < c[0] && (c[0] = x), x > c[1] && (c[1] = x), d[f++] = _;
        }
        return r._count = f, r._indices = d, r.getRawIndex = Ba, r;
    }, Im.getItemModel = function(t) {
        var e = this.hostModel;
        return new $i(this.getRawDataItem(t), e, e && e.ecModel);
    }, Im.diff = function(t) {
        var e = this;
        return new Ma(t ? t.getIndices() : [], this.getIndices(), function(e) {
            return Na(t, e);
        }, function(t) {
            return Na(e, t);
        });
    }, Im.getVisual = function(t) {
        var e = this._visual;
        return e && e[t];
    }, Im.setVisual = function(t, e) {
        if (pm(t)) for (var n in t) t.hasOwnProperty(n) && this.setVisual(n, t[n]); else this._visual = this._visual || {}, 
        this._visual[t] = e;
    }, Im.setLayout = function(t, e) {
        if (pm(t)) for (var n in t) t.hasOwnProperty(n) && this.setLayout(n, t[n]); else this._layout[t] = e;
    }, Im.getLayout = function(t) {
        return this._layout[t];
    }, Im.getItemLayout = function(t) {
        return this._itemLayouts[t];
    }, Im.setItemLayout = function(t, e, n) {
        this._itemLayouts[t] = n ? a(this._itemLayouts[t] || {}, e) : e;
    }, Im.clearItemLayouts = function() {
        this._itemLayouts.length = 0;
    }, Im.getItemVisual = function(t, e, n) {
        var i = this._itemVisuals[t], r = i && i[e];
        return null != r || n ? r : this.getVisual(e);
    }, Im.setItemVisual = function(t, e, n) {
        var i = this._itemVisuals[t] || {}, r = this.hasItemVisual;
        if (this._itemVisuals[t] = i, pm(e)) for (var o in e) e.hasOwnProperty(o) && (i[o] = e[o], 
        r[o] = !0); else i[e] = n, r[e] = !0;
    }, Im.clearAllVisual = function() {
        this._visual = {}, this._itemVisuals = [], this.hasItemVisual = {};
    };
    var Tm = function(t) {
        t.seriesIndex = this.seriesIndex, t.dataIndex = this.dataIndex, t.dataType = this.dataType;
    };
    Im.setItemGraphicEl = function(t, e) {
        var n = this.hostModel;
        e && (e.dataIndex = t, e.dataType = this.dataType, e.seriesIndex = n && n.seriesIndex, 
        "group" === e.type && e.traverse(Tm, e)), this._graphicEls[t] = e;
    }, Im.getItemGraphicEl = function(t) {
        return this._graphicEls[t];
    }, Im.eachItemGraphicEl = function(t, e) {
        f(this._graphicEls, function(n, i) {
            n && t && t.call(e, n, i);
        });
    }, Im.cloneShallow = function(t) {
        if (!t) {
            var e = p(this.dimensions, this.getDimensionInfo, this);
            t = new Mm(e, this.hostModel);
        }
        if (t._storage = this._storage, ka(t, this), this._indices) {
            var n = this._indices.constructor;
            t._indices = new n(this._indices);
        } else t._indices = null;
        return t.getRawIndex = t._indices ? Ba : Ea, t;
    }, Im.wrapMethod = function(t, e) {
        var n = this[t];
        "function" == typeof n && (this.__wrappedMethods = this.__wrappedMethods || [], 
        this.__wrappedMethods.push(t), this[t] = function() {
            var t = n.apply(this, arguments);
            return e.apply(this, [ t ].concat(k(arguments)));
        });
    }, Im.TRANSFERABLE_METHODS = [ "cloneShallow", "downSample", "map" ], Im.CHANGABLE_METHODS = [ "filterSelf", "selectRange" ];
    var Cm = function(t, e) {
        return Ha((e = e || {}).coordDimensions || [], t, {
            dimsDef: e.dimensionsDefine || t.dimensionsDefine,
            encodeDef: e.encodeDefine || t.encodeDefine,
            dimCount: e.dimensionsCount,
            encodeDefaulter: e.encodeDefaulter,
            generateCoord: e.generateCoord,
            generateCoordCount: e.generateCoordCount
        });
    }, Dm = {
        cartesian2d: function(t, e, n, i) {
            var r = t.getReferringComponents("xAxis")[0], o = t.getReferringComponents("yAxis")[0];
            if (Lu) {
                if (!r) throw new Error('xAxis "' + C(t.get("xAxisIndex"), t.get("xAxisId"), 0) + '" not found');
                if (!o) throw new Error('yAxis "' + C(t.get("xAxisIndex"), t.get("yAxisId"), 0) + '" not found');
            }
            e.coordSysDims = [ "x", "y" ], n.set("x", r), n.set("y", o), Xa(r) && (i.set("x", r), 
            e.firstCategoryDimIndex = 0), Xa(o) && (i.set("y", o), e.firstCategoryDimIndex, 
            e.firstCategoryDimIndex = 1);
        },
        singleAxis: function(t, e, n, i) {
            var r = t.getReferringComponents("singleAxis")[0];
            if (Lu && !r) throw new Error("singleAxis should be specified.");
            e.coordSysDims = [ "single" ], n.set("single", r), Xa(r) && (i.set("single", r), 
            e.firstCategoryDimIndex = 0);
        },
        polar: function(t, e, n, i) {
            var r = t.getReferringComponents("polar")[0], o = r.findAxisModel("radiusAxis"), a = r.findAxisModel("angleAxis");
            if (Lu) {
                if (!a) throw new Error("angleAxis option not found");
                if (!o) throw new Error("radiusAxis option not found");
            }
            e.coordSysDims = [ "radius", "angle" ], n.set("radius", o), n.set("angle", a), Xa(o) && (i.set("radius", o), 
            e.firstCategoryDimIndex = 0), Xa(a) && (i.set("angle", a), null == e.firstCategoryDimIndex && (e.firstCategoryDimIndex = 1));
        },
        geo: function(t, e) {
            e.coordSysDims = [ "lng", "lat" ];
        },
        parallel: function(t, e, n, i) {
            var r = t.ecModel, o = r.getComponent("parallel", t.get("parallelIndex")), a = e.coordSysDims = o.dimensions.slice();
            f(o.parallelAxisIndex, function(t, o) {
                var s = r.getComponent("parallelAxis", t), l = a[o];
                n.set(l, s), Xa(s) && null == e.firstCategoryDimIndex && (i.set(l, s), e.firstCategoryDimIndex = o);
            });
        }
    };
    Za.prototype.parse = function(t) {
        return t;
    }, Za.prototype.getSetting = function(t) {
        return this._setting[t];
    }, Za.prototype.contain = function(t) {
        var e = this._extent;
        return t >= e[0] && t <= e[1];
    }, Za.prototype.normalize = function(t) {
        var e = this._extent;
        return e[1] === e[0] ? .5 : (t - e[0]) / (e[1] - e[0]);
    }, Za.prototype.scale = function(t) {
        var e = this._extent;
        return t * (e[1] - e[0]) + e[0];
    }, Za.prototype.unionExtent = function(t) {
        var e = this._extent;
        t[0] < e[0] && (e[0] = t[0]), t[1] > e[1] && (e[1] = t[1]);
    }, Za.prototype.unionExtentFromData = function(t, e) {
        this.unionExtent(t.getApproximateExtent(e));
    }, Za.prototype.getExtent = function() {
        return this._extent.slice();
    }, Za.prototype.setExtent = function(t, e) {
        var n = this._extent;
        isNaN(t) || (n[0] = t), isNaN(e) || (n[1] = e);
    }, Za.prototype.isBlank = function() {
        return this._isBlank;
    }, Za.prototype.setBlank = function(t) {
        this._isBlank = t;
    }, Za.prototype.getLabel = null, Tn(Za), kn(Za, {
        registerWhenExtend: !0
    }), Ka.createByAxisModel = function(t) {
        var e = t.option, n = e.data, i = n && p(n, Qa);
        return new Ka({
            categories: i,
            needCollect: !i,
            deduplication: !1 !== e.dedplication
        });
    };
    var Am = Ka.prototype;
    Am.getOrdinal = function(t) {
        return $a(this).get(t);
    }, Am.parseAndCollect = function(t) {
        var e, n = this._needCollect;
        if ("string" != typeof t && !n) return t;
        if (n && !this._deduplication) return e = this.categories.length, this.categories[e] = t, 
        e;
        var i = $a(this);
        return null == (e = i.get(t)) && (n ? (e = this.categories.length, this.categories[e] = t, 
        i.set(t, e)) : e = NaN), e;
    };
    var km = Za.prototype, Pm = Za.extend({
        type: "ordinal",
        init: function(t, e) {
            (!t || x(t)) && (t = new Ka({
                categories: t
            })), this._ordinalMeta = t, this._extent = e || [ 0, t.categories.length - 1 ];
        },
        parse: function(t) {
            return "string" == typeof t ? this._ordinalMeta.getOrdinal(t) : Math.round(t);
        },
        contain: function(t) {
            return t = this.parse(t), km.contain.call(this, t) && null != this._ordinalMeta.categories[t];
        },
        normalize: function(t) {
            return km.normalize.call(this, this.parse(t));
        },
        scale: function(t) {
            return Math.round(km.scale.call(this, t));
        },
        getTicks: function() {
            for (var t = [], e = this._extent, n = e[0]; n <= e[1]; ) t.push(n), n++;
            return t;
        },
        getLabel: function(t) {
            return this.isBlank() ? void 0 : this._ordinalMeta.categories[t];
        },
        count: function() {
            return this._extent[1] - this._extent[0] + 1;
        },
        unionExtentFromData: function(t, e) {
            this.unionExtent(t.getApproximateExtent(e));
        },
        getOrdinalMeta: function() {
            return this._ordinalMeta;
        },
        niceTicks: R,
        niceExtent: R
    });
    Pm.create = function() {
        return new Pm();
    };
    var Lm = ir, Om = ir, Em = Za.extend({
        type: "interval",
        _interval: 0,
        _intervalPrecision: 2,
        setExtent: function(t, e) {
            var n = this._extent;
            isNaN(t) || (n[0] = parseFloat(t)), isNaN(e) || (n[1] = parseFloat(e));
        },
        unionExtent: function(t) {
            var e = this._extent;
            t[0] < e[0] && (e[0] = t[0]), t[1] > e[1] && (e[1] = t[1]), Em.prototype.setExtent.call(this, e[0], e[1]);
        },
        getInterval: function() {
            return this._interval;
        },
        setInterval: function(t) {
            this._interval = t, this._niceExtent = this._extent.slice(), this._intervalPrecision = Ja(t);
        },
        getTicks: function(t) {
            var e = this._interval, n = this._extent, i = this._niceExtent, r = this._intervalPrecision, o = [];
            if (!e) return o;
            n[0] < i[0] && o.push(t ? Om(i[0] - e, r) : n[0]);
            for (var a = i[0]; a <= i[1] && (o.push(a), (a = Om(a + e, r)) !== o[o.length - 1]); ) if (o.length > 1e4) return [];
            var s = o.length ? o[o.length - 1] : i[1];
            return n[1] > s && o.push(t ? Om(s + e, r) : n[1]), o;
        },
        getMinorTicks: function(t) {
            for (var e = this.getTicks(!0), n = [], i = this.getExtent(), r = 1; r < e.length; r++) {
                for (var o = e[r], a = e[r - 1], s = 0, l = [], u = (o - a) / t; t - 1 > s; ) {
                    var h = ir(a + (s + 1) * u);
                    h > i[0] && h < i[1] && l.push(h), s++;
                }
                n.push(l);
            }
            return n;
        },
        getLabel: function(t, e) {
            if (null == t) return "";
            var n = e && e.precision;
            return null == n ? n = or(t) || 0 : "auto" === n && (n = this._intervalPrecision), 
            pr(t = Om(t, n, !0));
        },
        niceTicks: function(t, e, n) {
            t = t || 5;
            var i = this._extent, r = i[1] - i[0];
            if (isFinite(r)) {
                0 > r && (r = -r, i.reverse());
                var o = function(t, e, n, i) {
                    var r = {}, o = t[1] - t[0], a = r.interval = fr(o / e, !0);
                    null != n && n > a && (a = r.interval = n), null != i && a > i && (a = r.interval = i);
                    var s = r.intervalPrecision = Ja(a);
                    return es(r.niceTickExtent = [ Lm(Math.ceil(t[0] / a) * a, s), Lm(Math.floor(t[1] / a) * a, s) ], t), 
                    r;
                }(i, t, e, n);
                this._intervalPrecision = o.intervalPrecision, this._interval = o.interval, this._niceExtent = o.niceTickExtent;
            }
        },
        niceExtent: function(t) {
            var e = this._extent;
            if (e[0] === e[1]) if (0 !== e[0]) {
                var n = e[0];
                t.fixMax || (e[1] += n / 2), e[0] -= n / 2;
            } else e[1] = 1;
            var i = e[1] - e[0];
            isFinite(i) || (e[0] = 0, e[1] = 1), this.niceTicks(t.splitNumber, t.minInterval, t.maxInterval);
            var r = this._interval;
            t.fixMin || (e[0] = Om(Math.floor(e[0] / r) * r)), t.fixMax || (e[1] = Om(Math.ceil(e[1] / r) * r));
        }
    });
    Em.create = function() {
        return new Em();
    };
    var Bm = "__ec_stack_", Nm = "undefined" != typeof Float32Array ? Float32Array : Array, zm = {
        seriesType: "bar",
        plan: eg(),
        reset: function(t) {
            if (ss(t) && ls(t)) {
                var e = t.getData(), n = t.coordinateSystem, i = n.grid.getRect(), r = n.getBaseAxis(), o = n.getOtherAxis(r), a = e.mapDimension(o.dim), s = e.mapDimension(r.dim), l = o.isHorizontal(), u = l ? 0 : 1, h = as(os([ t ]), r, t).width;
                return h > .5 || (h = .5), {
                    progress: function(t, e) {
                        for (var r, c = t.count, d = new Nm(2 * c), f = new Nm(2 * c), p = new Nm(c), g = [], m = [], v = 0, y = 0; null != (r = t.next()); ) m[u] = e.get(a, r), 
                        m[1 - u] = e.get(s, r), g = n.dataToPoint(m, null, g), f[v] = l ? i.x + i.width : g[0], 
                        d[v++] = g[0], f[v] = l ? g[1] : i.y + i.height, d[v++] = g[1], p[y++] = r;
                        e.setLayout({
                            largePoints: d,
                            largeDataIndices: p,
                            largeBackgroundPoints: f,
                            barWidth: h,
                            valueAxisStart: us(0, o),
                            backgroundStart: l ? i.x : i.y,
                            valueAxisHorizontal: l
                        });
                    }
                };
            }
        }
    }, Rm = Em.prototype, Fm = Math.ceil, Vm = Math.floor, Hm = 1e3, Gm = 6e4, Wm = 60 * Gm, Xm = 24 * Wm, Um = Em.extend({
        type: "time",
        getLabel: function(t) {
            var e = this._stepLvl, n = new Date(t);
            return _r(e[0], n, this.getSetting("useUTC"));
        },
        niceExtent: function(t) {
            var e = this._extent;
            if (e[0] === e[1] && (e[0] -= Xm, e[1] += Xm), e[1] === -1 / 0 && 1 / 0 === e[0]) {
                var n = new Date();
                e[1] = +new Date(n.getFullYear(), n.getMonth(), n.getDate()), e[0] = e[1] - Xm;
            }
            this.niceTicks(t.splitNumber, t.minInterval, t.maxInterval);
            var i = this._interval;
            t.fixMin || (e[0] = ir(Vm(e[0] / i) * i)), t.fixMax || (e[1] = ir(Fm(e[1] / i) * i));
        },
        niceTicks: function(t, e, n) {
            t = t || 10;
            var i = this._extent, r = i[1] - i[0], o = r / t;
            null != e && e > o && (o = e), null != n && o > n && (o = n);
            var a = Ym.length, s = function(t, e, n, i) {
                for (;i > n; ) {
                    var r = n + i >>> 1;
                    t[r][1] < e ? n = r + 1 : i = r;
                }
                return n;
            }(Ym, o, 0, a), l = Ym[Math.min(s, a - 1)], u = l[1];
            "year" === l[0] && (u *= fr(r / u / t, !0));
            var h = this.getSetting("useUTC") ? 0 : 60 * new Date(+i[0] || +i[1]).getTimezoneOffset() * 1e3, c = [ Math.round(Fm((i[0] - h) / u) * u + h), Math.round(Vm((i[1] - h) / u) * u + h) ];
            es(c, i), this._stepLvl = l, this._interval = u, this._niceExtent = c;
        },
        parse: function(t) {
            return +hr(t);
        }
    });
    f([ "contain", "normalize" ], function(t) {
        Um.prototype[t] = function(e) {
            return Rm[t].call(this, this.parse(e));
        };
    });
    var Ym = [ [ "hh:mm:ss", Hm ], [ "hh:mm:ss", 5e3 ], [ "hh:mm:ss", 1e4 ], [ "hh:mm:ss", 15e3 ], [ "hh:mm:ss", 3e4 ], [ "hh:mm\nMM-dd", Gm ], [ "hh:mm\nMM-dd", 5 * Gm ], [ "hh:mm\nMM-dd", 10 * Gm ], [ "hh:mm\nMM-dd", 15 * Gm ], [ "hh:mm\nMM-dd", 30 * Gm ], [ "hh:mm\nMM-dd", Wm ], [ "hh:mm\nMM-dd", 2 * Wm ], [ "hh:mm\nMM-dd", 6 * Wm ], [ "hh:mm\nMM-dd", 12 * Wm ], [ "MM-dd\nyyyy", Xm ], [ "MM-dd\nyyyy", 2 * Xm ], [ "MM-dd\nyyyy", 3 * Xm ], [ "MM-dd\nyyyy", 4 * Xm ], [ "MM-dd\nyyyy", 5 * Xm ], [ "MM-dd\nyyyy", 6 * Xm ], [ "week", 7 * Xm ], [ "MM-dd\nyyyy", 10 * Xm ], [ "week", 14 * Xm ], [ "week", 21 * Xm ], [ "month", 31 * Xm ], [ "week", 42 * Xm ], [ "month", 62 * Xm ], [ "week", 70 * Xm ], [ "quarter", 95 * Xm ], [ "month", 31 * Xm * 4 ], [ "month", 31 * Xm * 5 ], [ "half-year", 380 * Xm / 2 ], [ "month", 31 * Xm * 8 ], [ "month", 31 * Xm * 10 ], [ "year", 380 * Xm ] ];
    Um.create = function(t) {
        return new Um({
            useUTC: t.ecModel.get("useUTC")
        });
    };
    var qm = Za.prototype, jm = Em.prototype, Zm = or, Km = ir, $m = Math.floor, Qm = Math.ceil, Jm = Math.pow, tv = Math.log, ev = Za.extend({
        type: "log",
        base: 10,
        $constructor: function() {
            Za.apply(this, arguments), this._originalScale = new Em();
        },
        getTicks: function(t) {
            var e = this._originalScale, n = this._extent, i = e.getExtent();
            return p(jm.getTicks.call(this, t), function(t) {
                var r = ir(Jm(this.base, t));
                return r = t === n[0] && e.__fixMin ? hs(r, i[0]) : r, t === n[1] && e.__fixMax ? hs(r, i[1]) : r;
            }, this);
        },
        getMinorTicks: jm.getMinorTicks,
        getLabel: jm.getLabel,
        scale: function(t) {
            return t = qm.scale.call(this, t), Jm(this.base, t);
        },
        setExtent: function(t, e) {
            var n = this.base;
            t = tv(t) / tv(n), e = tv(e) / tv(n), jm.setExtent.call(this, t, e);
        },
        getExtent: function() {
            var t = this.base, e = qm.getExtent.call(this);
            e[0] = Jm(t, e[0]), e[1] = Jm(t, e[1]);
            var n = this._originalScale, i = n.getExtent();
            return n.__fixMin && (e[0] = hs(e[0], i[0])), n.__fixMax && (e[1] = hs(e[1], i[1])), 
            e;
        },
        unionExtent: function(t) {
            this._originalScale.unionExtent(t);
            var e = this.base;
            t[0] = tv(t[0]) / tv(e), t[1] = tv(t[1]) / tv(e), qm.unionExtent.call(this, t);
        },
        unionExtentFromData: function(t, e) {
            this.unionExtent(t.getApproximateExtent(e));
        },
        niceTicks: function(t) {
            t = t || 10;
            var e = this._extent, n = e[1] - e[0];
            if (!(1 / 0 === n || 0 >= n)) {
                var i = cr(n);
                for (.5 >= t / n * i && (i *= 10); !isNaN(i) && Math.abs(i) < 1 && Math.abs(i) > 0; ) i *= 10;
                var r = [ ir(Qm(e[0] / i) * i), ir($m(e[1] / i) * i) ];
                this._interval = i, this._niceExtent = r;
            }
        },
        niceExtent: function(t) {
            jm.niceExtent.call(this, t);
            var e = this._originalScale;
            e.__fixMin = t.fixMin, e.__fixMax = t.fixMax;
        }
    });
    f([ "contain", "normalize" ], function(t) {
        ev.prototype[t] = function(e) {
            return e = tv(e) / tv(this.base), qm[t].call(this, e);
        };
    }), ev.create = function() {
        return new ev();
    };
    var nv = {
        getMin: function(t) {
            var e = this.option, n = t || null == e.rangeStart ? e.min : e.rangeStart;
            return this.axis && null != n && "dataMin" !== n && "function" != typeof n && !T(n) && (n = this.axis.scale.parse(n)), 
            n;
        },
        getMax: function(t) {
            var e = this.option, n = t || null == e.rangeEnd ? e.max : e.rangeEnd;
            return this.axis && null != n && "dataMax" !== n && "function" != typeof n && !T(n) && (n = this.axis.scale.parse(n)), 
            n;
        },
        getNeedCrossZero: function() {
            var t = this.option;
            return null == t.rangeStart && null == t.rangeEnd && !t.scale;
        },
        getCoordSysModel: R,
        setRange: function(t, e) {
            this.option.rangeStart = t, this.option.rangeEnd = e;
        },
        resetRange: function() {
            this.option.rangeStart = this.option.rangeEnd = null;
        }
    }, iv = pi({
        type: "triangle",
        shape: {
            cx: 0,
            cy: 0,
            width: 0,
            height: 0
        },
        buildPath: function(t, e) {
            var n = e.cx, i = e.cy, r = e.width / 2, o = e.height / 2;
            t.moveTo(n, i - o), t.lineTo(n + r, i + o), t.lineTo(n - r, i + o), t.closePath();
        }
    }), rv = pi({
        type: "diamond",
        shape: {
            cx: 0,
            cy: 0,
            width: 0,
            height: 0
        },
        buildPath: function(t, e) {
            var n = e.cx, i = e.cy, r = e.width / 2, o = e.height / 2;
            t.moveTo(n, i - o), t.lineTo(n + r, i), t.lineTo(n, i + o), t.lineTo(n - r, i), 
            t.closePath();
        }
    }), ov = pi({
        type: "pin",
        shape: {
            x: 0,
            y: 0,
            width: 0,
            height: 0
        },
        buildPath: function(t, e) {
            var n = e.x, i = e.y, r = e.width / 5 * 3, o = Math.max(r, e.height), a = r / 2, s = a * a / (o - a), l = i - o + a + s, u = Math.asin(s / a), h = Math.cos(u) * a, c = Math.sin(u), d = Math.cos(u), f = .6 * a, p = .7 * a;
            t.moveTo(n - h, l + s), t.arc(n, l, a, Math.PI - u, 2 * Math.PI + u), t.bezierCurveTo(n + h - c * f, l + s + d * f, n, i - p, n, i), 
            t.bezierCurveTo(n, i - p, n - h + c * f, l + s + d * f, n - h, l + s), t.closePath();
        }
    }), av = pi({
        type: "arrow",
        shape: {
            x: 0,
            y: 0,
            width: 0,
            height: 0
        },
        buildPath: function(t, e) {
            var n = e.height, i = e.width, r = e.x, o = e.y, a = i / 3 * 2;
            t.moveTo(r, o), t.lineTo(r + a, o + n), t.lineTo(r, o + n / 4 * 3), t.lineTo(r - a, o + n), 
            t.lineTo(r, o), t.closePath();
        }
    }), sv = {
        line: function(t, e, n, i, r) {
            r.x1 = t, r.y1 = e + i / 2, r.x2 = t + n, r.y2 = e + i / 2;
        },
        rect: function(t, e, n, i, r) {
            r.x = t, r.y = e, r.width = n, r.height = i;
        },
        roundRect: function(t, e, n, i, r) {
            r.x = t, r.y = e, r.width = n, r.height = i, r.r = Math.min(n, i) / 4;
        },
        square: function(t, e, n, i, r) {
            var o = Math.min(n, i);
            r.x = t, r.y = e, r.width = o, r.height = o;
        },
        circle: function(t, e, n, i, r) {
            r.cx = t + n / 2, r.cy = e + i / 2, r.r = Math.min(n, i) / 2;
        },
        diamond: function(t, e, n, i, r) {
            r.cx = t + n / 2, r.cy = e + i / 2, r.width = n, r.height = i;
        },
        pin: function(t, e, n, i, r) {
            r.x = t + n / 2, r.y = e + i / 2, r.width = n, r.height = i;
        },
        arrow: function(t, e, n, i, r) {
            r.x = t + n / 2, r.y = e + i / 2, r.width = n, r.height = i;
        },
        triangle: function(t, e, n, i, r) {
            r.cx = t + n / 2, r.cy = e + i / 2, r.width = n, r.height = i;
        }
    }, lv = {};
    f({
        line: _f,
        rect: yf,
        roundRect: yf,
        square: yf,
        circle: sf,
        diamond: rv,
        pin: ov,
        arrow: av,
        triangle: iv
    }, function(t, e) {
        lv[e] = new t();
    });
    var uv = pi({
        type: "symbol",
        shape: {
            symbolType: "",
            x: 0,
            y: 0,
            width: 0,
            height: 0
        },
        calculateTextPosition: function(t, e, n) {
            var i = Me(t, e, n), r = this.shape;
            return r && "pin" === r.symbolType && "inside" === e.textPosition && (i.y = n.y + .4 * n.height), 
            i;
        },
        buildPath: function(t, e, n) {
            var i = e.symbolType;
            if ("none" !== i) {
                var r = lv[i];
                r || (r = lv[i = "rect"]), sv[i](e.x, e.y, e.width, e.height, r.shape), r.buildPath(t, r.shape, n);
            }
        }
    }), hv = {
        isDimensionStacked: Ya,
        enableDataStack: Ua,
        getStackedDimension: qa
    }, cv = (Object.freeze || Object)({
        createList: function(t) {
            return ja(t.getSource(), t);
        },
        getLayoutRect: Sr,
        dataStack: hv,
        createScale: function(t, e) {
            var n = e;
            $i.isInstance(e) || c(n = new $i(e), nv);
            var i = fs(n);
            return i.setExtent(t[0], t[1]), ds(i, n), i;
        },
        mixinAxisModelCommonMethods: function(t) {
            c(t, nv);
        },
        completeDimensions: Ha,
        createDimensions: Cm,
        createSymbol: _s
    }), dv = 1e-8;
    Ss.prototype = {
        constructor: Ss,
        properties: null,
        getBoundingRect: function() {
            var t = this._rect;
            if (t) return t;
            for (var e = Number.MAX_VALUE, n = [ e, e ], i = [ -e, -e ], r = [], o = [], a = this.geometries, s = 0; s < a.length; s++) {
                if ("polygon" === a[s].type) Hn(a[s].exterior, r, o), Q(n, n, r), J(i, i, o);
            }
            return 0 === s && (n[0] = n[1] = i[0] = i[1] = 0), this._rect = new re(n[0], n[1], i[0] - n[0], i[1] - n[1]);
        },
        contain: function(t) {
            var e = this.getBoundingRect(), n = this.geometries;
            if (!e.contain(t[0], t[1])) return !1;
            t: for (var i = 0, r = n.length; r > i; i++) if ("polygon" === n[i].type) {
                var o = n[i].exterior, a = n[i].interiors;
                if (bs(o, t[0], t[1])) {
                    for (var s = 0; s < (a ? a.length : 0); s++) if (bs(a[s])) continue t;
                    return !0;
                }
            }
            return !1;
        },
        transformTo: function(t, e, n, i) {
            var r = this.getBoundingRect(), o = r.width / r.height;
            n ? i || (i = n / o) : n = o * i;
            for (var a = new re(t, e, n, i), s = r.calculateTransform(a), l = this.geometries, u = 0; u < l.length; u++) if ("polygon" === l[u].type) {
                for (var h = l[u].exterior, c = l[u].interiors, d = 0; d < h.length; d++) $(h[d], h[d], s);
                for (var f = 0; f < (c ? c.length : 0); f++) for (d = 0; d < c[f].length; d++) $(c[f][d], c[f][d], s);
            }
            (r = this._rect).copy(a), this.center = [ r.x + r.width / 2, r.y + r.height / 2 ];
        },
        cloneShallow: function(t) {
            null == t && (t = this.name);
            var e = new Ss(t, this.geometries, this.center);
            return e._rect = this._rect, e.transformTo = null, e;
        }
    };
    var fv = function(t, e) {
        return function(t) {
            if (!t.UTF8Encoding) return t;
            var e = t.UTF8Scale;
            null == e && (e = 1024);
            for (var n = t.features, i = 0; i < n.length; i++) for (var r = n[i].geometry, o = r.coordinates, a = r.encodeOffsets, s = 0; s < o.length; s++) {
                var l = o[s];
                if ("Polygon" === r.type) o[s] = Ms(l, a[s], e); else if ("MultiPolygon" === r.type) for (var u = 0; u < l.length; u++) {
                    var h = l[u];
                    l[u] = Ms(h, a[s][u], e);
                }
            }
            t.UTF8Encoding = !1;
        }(t), p(m(t.features, function(t) {
            return t.geometry && t.properties && t.geometry.coordinates.length > 0;
        }), function(t) {
            var n = t.properties, i = t.geometry, r = i.coordinates, o = [];
            "Polygon" === i.type && o.push({
                type: "polygon",
                exterior: r[0],
                interiors: r.slice(1)
            }), "MultiPolygon" === i.type && f(r, function(t) {
                t[0] && o.push({
                    type: "polygon",
                    exterior: t[0],
                    interiors: t.slice(1)
                });
            });
            var a = new Ss(n[e || "name"], o, n.cp);
            return a.properties = n, a;
        });
    }, pv = _n(), gv = [ 0, 1 ], mv = function(t, e, n) {
        this.dim = t, this.scale = e, this._extent = n || [ 0, 0 ], this.inverse = !1, this.onBand = !1;
    };
    mv.prototype = {
        constructor: mv,
        contain: function(t) {
            var e = this._extent, n = Math.min(e[0], e[1]), i = Math.max(e[0], e[1]);
            return t >= n && i >= t;
        },
        containData: function(t) {
            return this.scale.contain(t);
        },
        getExtent: function() {
            return this._extent.slice();
        },
        getPixelPrecision: function(t) {
            return ar(t || this.scale.getExtent(), this._extent);
        },
        setExtent: function(t, e) {
            var n = this._extent;
            n[0] = t, n[1] = e;
        },
        dataToCoord: function(t, e) {
            var n = this._extent, i = this.scale;
            return t = i.normalize(t), this.onBand && "ordinal" === i.type && Os(n = n.slice(), i.count()), 
            er(t, gv, n, e);
        },
        coordToData: function(t, e) {
            var n = this._extent, i = this.scale;
            this.onBand && "ordinal" === i.type && Os(n = n.slice(), i.count());
            var r = er(t, n, gv, e);
            return this.scale.scale(r);
        },
        pointToData: function() {},
        getTicksCoords: function(t) {
            var e = (t = t || {}).tickModel || this.getTickModel(), n = p(Ts(this, e).ticks, function(t) {
                return {
                    coord: this.dataToCoord(t),
                    tickValue: t
                };
            }, this);
            return function(t, e, n, i) {
                function r(t, e) {
                    return t = ir(t), e = ir(e), c ? t > e : e > t;
                }
                var o = e.length;
                if (t.onBand && !n && o) {
                    var a, s, l = t.getExtent();
                    if (1 === o) e[0].coord = l[0], a = e[1] = {
                        coord: l[0]
                    }; else {
                        var u = e[o - 1].tickValue - e[0].tickValue, h = (e[o - 1].coord - e[0].coord) / u;
                        f(e, function(t) {
                            t.coord -= h / 2;
                        }), s = 1 + t.scale.getExtent()[1] - e[o - 1].tickValue, a = {
                            coord: e[o - 1].coord + h * s
                        }, e.push(a);
                    }
                    var c = l[0] > l[1];
                    r(e[0].coord, l[0]) && (i ? e[0].coord = l[0] : e.shift()), i && r(l[0], e[0].coord) && e.unshift({
                        coord: l[0]
                    }), r(l[1], a.coord) && (i ? a.coord = l[1] : e.pop()), i && r(a.coord, l[1]) && e.push({
                        coord: l[1]
                    });
                }
            }(this, n, e.get("alignWithLabel"), t.clamp), n;
        },
        getMinorTicksCoords: function() {
            if ("ordinal" === this.scale.type) return [];
            var t = this.model.getModel("minorTick").get("splitNumber");
            return t > 0 && 100 > t || (t = 5), p(this.scale.getMinorTicks(t), function(t) {
                return p(t, function(t) {
                    return {
                        coord: this.dataToCoord(t),
                        tickValue: t
                    };
                }, this);
            }, this);
        },
        getViewLabels: function() {
            return Is(this).labels;
        },
        getLabelModel: function() {
            return this.model.getModel("axisLabel");
        },
        getTickModel: function() {
            return this.model.getModel("axisTick");
        },
        getBandWidth: function() {
            var t = this._extent, e = this.scale.getExtent(), n = e[1] - e[0] + (this.onBand ? 1 : 0);
            0 === n && (n = 1);
            var i = Math.abs(t[1] - t[0]);
            return Math.abs(i) / n;
        },
        isHorizontal: null,
        getRotate: null,
        calculateCategoryInterval: function() {
            return function(t) {
                var e = function(t) {
                    var e = t.getLabelModel();
                    return {
                        axisRotate: t.getRotate ? t.getRotate() : t.isHorizontal && !t.isHorizontal() ? 90 : 0,
                        labelRotate: e.get("rotate") || 0,
                        font: e.getFont()
                    };
                }(t), n = ps(t), i = (e.axisRotate - e.labelRotate) / 180 * Math.PI, r = t.scale, o = r.getExtent(), a = r.count();
                if (o[1] - o[0] < 1) return 0;
                var s = 1;
                a > 40 && (s = Math.max(1, Math.floor(a / 40)));
                for (var l = o[0], u = t.dataToCoord(l + 1) - t.dataToCoord(l), h = Math.abs(u * Math.cos(i)), c = Math.abs(u * Math.sin(i)), d = 0, f = 0; l <= o[1]; l += s) {
                    var p, g, m = we(n(l), e.font, "center", "top");
                    p = 1.3 * m.width, g = 1.3 * m.height, d = Math.max(d, p, 7), f = Math.max(f, g, 7);
                }
                var v = d / h, y = f / c;
                isNaN(v) && (v = 1 / 0), isNaN(y) && (y = 1 / 0);
                var x = Math.max(0, Math.floor(Math.min(v, y))), _ = pv(t.model), w = t.getExtent(), b = _.lastAutoInterval, S = _.lastTickCount;
                return null != b && null != S && Math.abs(b - x) <= 1 && Math.abs(S - a) <= 1 && b > x && _.axisExtend0 === w[0] && _.axisExtend1 === w[1] ? x = b : (_.lastTickCount = a, 
                _.lastAutoInterval = x, _.axisExtend0 = w[0], _.axisExtend1 = w[1]), x;
            }(this);
        }
    };
    var vv = fv, yv = {};
    f([ "map", "each", "filter", "indexOf", "inherits", "reduce", "filter", "bind", "curry", "isArray", "isString", "isObject", "isFunction", "extend", "defaults", "clone", "merge" ], function(t) {
        yv[t] = Zu[t];
    });
    var xv = {};
    f([ "extendShape", "extendPath", "makePath", "makeImage", "mergePath", "resizePath", "createIcon", "setHoverStyle", "setLabelStyle", "setTextStyle", "setText", "getFont", "updateProps", "initProps", "getTransform", "clipPointsByRect", "clipRectByRect", "registerShape", "getShapeClass", "Group", "Image", "Text", "Circle", "Sector", "Ring", "Polygon", "Polyline", "Rect", "Line", "BezierCurve", "Arc", "IncrementalDisplayable", "CompoundPath", "LinearGradient", "RadialGradient", "BoundingRect" ], function(t) {
        xv[t] = Gf[t];
    });
    var _v = function(t) {
        this._axes = {}, this._dimList = [], this.name = t || "";
    };
    _v.prototype = {
        constructor: _v,
        type: "cartesian",
        getAxis: function(t) {
            return this._axes[t];
        },
        getAxes: function() {
            return p(this._dimList, Es, this);
        },
        getAxesByScale: function(t) {
            return t = t.toLowerCase(), m(this.getAxes(), function(e) {
                return e.scale.type === t;
            });
        },
        addAxis: function(t) {
            var e = t.dim;
            this._axes[e] = t, this._dimList.push(e);
        },
        dataToCoord: function(t) {
            return this._dataCoordConvert(t, "dataToCoord");
        },
        coordToData: function(t) {
            return this._dataCoordConvert(t, "coordToData");
        },
        _dataCoordConvert: function(t, e) {
            for (var n = this._dimList, i = t instanceof Array ? [] : {}, r = 0; r < n.length; r++) {
                var o = n[r], a = this._axes[o];
                i[o] = a[e](t[o]);
            }
            return i;
        }
    }, Bs.prototype = {
        constructor: Bs,
        type: "cartesian2d",
        dimensions: [ "x", "y" ],
        getBaseAxis: function() {
            return this.getAxesByScale("ordinal")[0] || this.getAxesByScale("time")[0] || this.getAxis("x");
        },
        containPoint: function(t) {
            var e = this.getAxis("x"), n = this.getAxis("y");
            return e.contain(e.toLocalCoord(t[0])) && n.contain(n.toLocalCoord(t[1]));
        },
        containData: function(t) {
            return this.getAxis("x").containData(t[0]) && this.getAxis("y").containData(t[1]);
        },
        dataToPoint: function(t, e, n) {
            var i = this.getAxis("x"), r = this.getAxis("y");
            return (n = n || [])[0] = i.toGlobalCoord(i.dataToCoord(t[0])), n[1] = r.toGlobalCoord(r.dataToCoord(t[1])), 
            n;
        },
        clampData: function(t, e) {
            var n = this.getAxis("x").scale, i = this.getAxis("y").scale, r = n.getExtent(), o = i.getExtent(), a = n.parse(t[0]), s = i.parse(t[1]);
            return (e = e || [])[0] = Math.min(Math.max(Math.min(r[0], r[1]), a), Math.max(r[0], r[1])), 
            e[1] = Math.min(Math.max(Math.min(o[0], o[1]), s), Math.max(o[0], o[1])), e;
        },
        pointToData: function(t, e) {
            var n = this.getAxis("x"), i = this.getAxis("y");
            return (e = e || [])[0] = n.coordToData(n.toLocalCoord(t[0])), e[1] = i.coordToData(i.toLocalCoord(t[1])), 
            e;
        },
        getOtherAxis: function(t) {
            return this.getAxis("x" === t.dim ? "y" : "x");
        },
        getArea: function() {
            var t = this.getAxis("x").getGlobalExtent(), e = this.getAxis("y").getGlobalExtent(), n = Math.min(t[0], t[1]), i = Math.min(e[0], e[1]);
            return new re(n, i, Math.max(t[0], t[1]) - n, Math.max(e[0], e[1]) - i);
        }
    }, h(Bs, _v);
    var wv = function(t, e, n, i, r) {
        mv.call(this, t, e, n), this.type = i || "value", this.position = r || "bottom";
    };
    wv.prototype = {
        constructor: wv,
        index: 0,
        getAxesOnZeroOf: null,
        model: null,
        isHorizontal: function() {
            var t = this.position;
            return "top" === t || "bottom" === t;
        },
        getGlobalExtent: function(t) {
            var e = this.getExtent();
            return e[0] = this.toGlobalCoord(e[0]), e[1] = this.toGlobalCoord(e[1]), t && e[0] > e[1] && e.reverse(), 
            e;
        },
        getOtherAxis: function() {
            this.grid.getOtherAxis();
        },
        pointToData: function(t, e) {
            return this.coordToData(this.toLocalCoord(t["x" === this.dim ? 0 : 1]), e);
        },
        toLocalCoord: null,
        toGlobalCoord: null
    }, h(wv, mv);
    var bv = {
        show: !0,
        zlevel: 0,
        z: 0,
        inverse: !1,
        name: "",
        nameLocation: "end",
        nameRotate: null,
        nameTruncate: {
            maxWidth: null,
            ellipsis: "...",
            placeholder: "."
        },
        nameTextStyle: {},
        nameGap: 15,
        silent: !1,
        triggerEvent: !1,
        tooltip: {
            show: !1
        },
        axisPointer: {},
        axisLine: {
            show: !0,
            onZero: !0,
            onZeroAxisIndex: null,
            lineStyle: {
                color: "#333",
                width: 1,
                type: "solid"
            },
            symbol: [ "none", "none" ],
            symbolSize: [ 10, 15 ]
        },
        axisTick: {
            show: !0,
            inside: !1,
            length: 5,
            lineStyle: {
                width: 1
            }
        },
        axisLabel: {
            show: !0,
            inside: !1,
            rotate: 0,
            showMinLabel: null,
            showMaxLabel: null,
            margin: 8,
            fontSize: 12
        },
        splitLine: {
            show: !0,
            lineStyle: {
                color: [ "#ccc" ],
                width: 1,
                type: "solid"
            }
        },
        splitArea: {
            show: !1,
            areaStyle: {
                color: [ "rgba(250,250,250,0.3)", "rgba(200,200,200,0.3)" ]
            }
        }
    }, Sv = {};
    Sv.categoryAxis = r({
        boundaryGap: !0,
        deduplication: null,
        splitLine: {
            show: !1
        },
        axisTick: {
            alignWithLabel: !1,
            interval: "auto"
        },
        axisLabel: {
            interval: "auto"
        }
    }, bv), Sv.valueAxis = r({
        boundaryGap: [ 0, 0 ],
        splitNumber: 5,
        minorTick: {
            show: !1,
            splitNumber: 5,
            length: 3,
            lineStyle: {}
        },
        minorSplitLine: {
            show: !1,
            lineStyle: {
                color: "#eee",
                width: 1
            }
        }
    }, bv), Sv.timeAxis = s({
        scale: !0,
        min: "dataMin",
        max: "dataMax"
    }, Sv.valueAxis), Sv.logAxis = s({
        scale: !0,
        logBase: 10
    }, Sv.valueAxis);
    var Mv = [ "value", "category", "time", "log" ], Iv = function(t, e, n, i) {
        f(Mv, function(a) {
            e.extend({
                type: t + "Axis." + a,
                mergeDefaultAndTheme: function(e, i) {
                    var o = this.layoutMode, s = o ? Ir(e) : {};
                    r(e, i.getTheme().get(a + "Axis")), r(e, this.getDefaultOption()), e.type = n(t, e), 
                    o && Mr(e, s, o);
                },
                optionUpdated: function() {
                    "category" === this.option.type && (this.__ordinalMeta = Ka.createByAxisModel(this));
                },
                getCategories: function(t) {
                    var e = this.option;
                    return "category" === e.type ? t ? e.data : this.__ordinalMeta.categories : void 0;
                },
                getOrdinalMeta: function() {
                    return this.__ordinalMeta;
                },
                defaultOption: o([ {}, Sv[a + "Axis"], i ], !0)
            });
        }), dp.registerSubTypeDefaulter(t + "Axis", y(n, t));
    }, Tv = dp.extend({
        type: "cartesian2dAxis",
        axis: null,
        init: function() {
            Tv.superApply(this, "init", arguments), this.resetRange();
        },
        mergeOption: function() {
            Tv.superApply(this, "mergeOption", arguments), this.resetRange();
        },
        restoreData: function() {
            Tv.superApply(this, "restoreData", arguments), this.resetRange();
        },
        getCoordSysModel: function() {
            return this.ecModel.queryComponents({
                mainType: "grid",
                index: this.option.gridIndex,
                id: this.option.gridId
            })[0];
        }
    });
    r(Tv.prototype, nv);
    var Cv = {
        offset: 0
    };
    Iv("x", Tv, Ns, Cv), Iv("y", Tv, Ns, Cv), dp.extend({
        type: "grid",
        dependencies: [ "xAxis", "yAxis" ],
        layoutMode: "box",
        coordinateSystem: null,
        defaultOption: {
            show: !1,
            zlevel: 0,
            z: 0,
            left: "10%",
            top: 60,
            right: "10%",
            bottom: 60,
            containLabel: !1,
            backgroundColor: "rgba(0,0,0,0)",
            borderWidth: 1,
            borderColor: "#ccc"
        }
    });
    var Dv = Rs.prototype;
    Dv.type = "grid", Dv.axisPointerEnabled = !0, Dv.getRect = function() {
        return this._rect;
    }, Dv.update = function(t, e) {
        var n = this._axesMap;
        this._updateScale(t, this.model), f(n.x, function(t) {
            ds(t.scale, t.model);
        }), f(n.y, function(t) {
            ds(t.scale, t.model);
        });
        var i = {};
        f(n.x, function(t) {
            Fs(n, "y", t, i);
        }), f(n.y, function(t) {
            Fs(n, "x", t, i);
        }), this.resize(this.model, e);
    }, Dv.resize = function(t, e, n) {
        function i() {
            f(o, function(t) {
                var e = t.isHorizontal(), n = e ? [ 0, r.width ] : [ 0, r.height ], i = t.inverse ? 1 : 0;
                t.setExtent(n[i], n[1 - i]), function(t, e) {
                    var n = t.getExtent(), i = n[0] + n[1];
                    t.toGlobalCoord = "x" === t.dim ? function(t) {
                        return t + e;
                    } : function(t) {
                        return i - t + e;
                    }, t.toLocalCoord = "x" === t.dim ? function(t) {
                        return t - e;
                    } : function(t) {
                        return i - t + e;
                    };
                }(t, e ? r.x : r.y);
            });
        }
        var r = Sr(t.getBoxLayoutParams(), {
            width: e.getWidth(),
            height: e.getHeight()
        });
        this._rect = r;
        var o = this._axesList;
        i(), !n && t.get("containLabel") && (f(o, function(t) {
            if (!t.model.get("axisLabel.inside")) {
                var e = function(t) {
                    var e = t.model, n = t.scale;
                    if (e.get("axisLabel.show") && !n.isBlank()) {
                        var i, r, o = "category" === t.type, a = n.getExtent();
                        o ? r = n.count() : r = (i = n.getTicks()).length;
                        var s, l = t.getLabelModel(), u = ps(t), h = 1;
                        r > 40 && (h = Math.ceil(r / 40));
                        for (var c = 0; r > c; c += h) {
                            var d = u(i ? i[c] : a[0] + c), f = ms(l.getTextRect(d), l.get("rotate") || 0);
                            s ? s.union(f) : s = f;
                        }
                        return s;
                    }
                }(t);
                if (e) {
                    var n = t.isHorizontal() ? "height" : "width", i = t.model.get("axisLabel.margin");
                    r[n] -= e[n] + i, "top" === t.position ? r.y += e.height + i : "left" === t.position && (r.x += e.width + i);
                }
            }
        }), i());
    }, Dv.getAxis = function(t, e) {
        var n = this._axesMap[t];
        if (null != n) {
            if (null == e) for (var i in n) if (n.hasOwnProperty(i)) return n[i];
            return n[e];
        }
    }, Dv.getAxes = function() {
        return this._axesList.slice();
    }, Dv.getCartesian = function(t, e) {
        if (null != t && null != e) {
            var n = "x" + t + "y" + e;
            return this._coordsMap[n];
        }
        b(t) && (e = t.yAxisIndex, t = t.xAxisIndex);
        for (var i = 0, r = this._coordsList; i < r.length; i++) if (r[i].getAxis("x").index === t || r[i].getAxis("y").index === e) return r[i];
    }, Dv.getCartesians = function() {
        return this._coordsList.slice();
    }, Dv.convertToPixel = function(t, e, n) {
        var i = this._findConvertTarget(t, e);
        return i.cartesian ? i.cartesian.dataToPoint(n) : i.axis ? i.axis.toGlobalCoord(i.axis.dataToCoord(n)) : null;
    }, Dv.convertFromPixel = function(t, e, n) {
        var i = this._findConvertTarget(t, e);
        return i.cartesian ? i.cartesian.pointToData(n) : i.axis ? i.axis.coordToData(i.axis.toLocalCoord(n)) : null;
    }, Dv._findConvertTarget = function(t, e) {
        var n, i, r = e.seriesModel, o = e.xAxisModel || r && r.getReferringComponents("xAxis")[0], a = e.yAxisModel || r && r.getReferringComponents("yAxis")[0], s = e.gridModel, l = this._coordsList;
        if (r) u(l, n = r.coordinateSystem) < 0 && (n = null); else if (o && a) n = this.getCartesian(o.componentIndex, a.componentIndex); else if (o) i = this.getAxis("x", o.componentIndex); else if (a) i = this.getAxis("y", a.componentIndex); else if (s) {
            s.coordinateSystem === this && (n = this._coordsList[0]);
        }
        return {
            cartesian: n,
            axis: i
        };
    }, Dv.containPoint = function(t) {
        var e = this._coordsList[0];
        return e ? e.containPoint(t) : void 0;
    }, Dv._initCartesian = function(t, e) {
        function n(e) {
            return function(n, a) {
                if (zs(n, t)) {
                    var s = n.get("position");
                    "x" === e ? "top" !== s && "bottom" !== s && (s = i.bottom ? "top" : "bottom") : "left" !== s && "right" !== s && (s = i.left ? "right" : "left"), 
                    i[s] = !0;
                    var l = new wv(e, fs(n), [ 0, 0 ], n.get("type"), s), u = "category" === l.type;
                    l.onBand = u && n.get("boundaryGap"), l.inverse = n.get("inverse"), n.axis = l, 
                    l.model = n, l.grid = this, l.index = a, this._axesList.push(l), r[e][a] = l, o[e]++;
                }
            };
        }
        var i = {
            left: !1,
            right: !1,
            top: !1,
            bottom: !1
        }, r = {
            x: {},
            y: {}
        }, o = {
            x: 0,
            y: 0
        };
        return e.eachComponent("xAxis", n("x"), this), e.eachComponent("yAxis", n("y"), this), 
        o.x && o.y ? (this._axesMap = r, void f(r.x, function(e, n) {
            f(r.y, function(i, r) {
                var o = "x" + n + "y" + r, a = new Bs(o);
                a.grid = this, a.model = t, this._coordsMap[o] = a, this._coordsList.push(a), a.addAxis(e), 
                a.addAxis(i);
            }, this);
        }, this)) : (this._axesMap = {}, void (this._axesList = []));
    }, Dv._updateScale = function(t, e) {
        function n(t, e) {
            f(t.mapDimension(e.dim, !0), function(n) {
                e.scale.unionExtentFromData(t, qa(t, n));
            });
        }
        f(this._axesList, function(t) {
            t.scale.setExtent(1 / 0, -1 / 0);
        }), t.eachSeries(function(t) {
            if (Gs(t)) {
                var i = Hs(t), r = i[0], o = i[1];
                if (!zs(r, e) || !zs(o, e)) return;
                var a = this.getCartesian(r.componentIndex, o.componentIndex), s = t.getData(), l = a.getAxis("x"), u = a.getAxis("y");
                "list" === s.type && (n(s, l), n(s, u));
            }
        }, this);
    }, Dv.getTooltipAxes = function(t) {
        var e = [], n = [];
        return f(this.getCartesians(), function(i) {
            var r = null != t && "auto" !== t ? i.getAxis(t) : i.getBaseAxis(), o = i.getOtherAxis(r);
            u(e, r) < 0 && e.push(r), u(n, o) < 0 && n.push(o);
        }), {
            baseAxes: e,
            otherAxes: n
        };
    };
    var Av = [ "xAxis", "yAxis" ];
    Rs.create = function(t, e) {
        var n = [];
        return t.eachComponent("grid", function(i, r) {
            var o = new Rs(i, t, e);
            o.name = "grid_" + r, o.resize(i, e, !0), i.coordinateSystem = o, n.push(o);
        }), t.eachSeries(function(t) {
            if (Gs(t)) {
                var e = Hs(t), n = e[0], i = e[1], r = n.getCoordSysModel();
                if (Lu) {
                    if (!r) throw new Error('Grid "' + C(n.get("gridIndex"), n.get("gridId"), 0) + '" not found');
                    if (n.getCoordSysModel() !== i.getCoordSysModel()) throw new Error("xAxis and yAxis must use the same grid");
                }
                var o = r.coordinateSystem;
                t.coordinateSystem = o.getCartesian(n.componentIndex, i.componentIndex);
            }
        }), n;
    }, Rs.dimensions = Rs.prototype.dimensions = Bs.prototype.dimensions, Vr.register("cartesian2d", Rs), 
    Qp.extend({
        type: "series.__base_bar__",
        getInitialData: function() {
            return ja(this.getSource(), this, {
                useEncodeDefaulter: !0
            });
        },
        getMarkerPosition: function(t) {
            var e = this.coordinateSystem;
            if (e) {
                var n = e.dataToPoint(e.clampData(t)), i = this.getData(), r = i.getLayout("offset"), o = i.getLayout("size");
                return n[e.getBaseAxis().isHorizontal() ? 0 : 1] += r + o / 2, n;
            }
            return [ NaN, NaN ];
        },
        defaultOption: {
            zlevel: 0,
            z: 2,
            coordinateSystem: "cartesian2d",
            legendHoverLink: !0,
            barMinHeight: 0,
            barMinAngle: 0,
            large: !1,
            largeThreshold: 400,
            progressive: 3e3,
            progressiveChunkMode: "mod",
            itemStyle: {},
            emphasis: {}
        }
    }).extend({
        type: "series.bar",
        dependencies: [ "grid", "polar" ],
        brushSelector: "rect",
        getProgressive: function() {
            return !!this.get("large") && this.get("progressive");
        },
        getProgressiveThreshold: function() {
            var t = this.get("progressiveThreshold"), e = this.get("largeThreshold");
            return e > t && (t = e), t;
        },
        defaultOption: {
            clip: !0,
            roundCap: !1,
            showBackground: !1,
            backgroundStyle: {
                color: "rgba(180, 180, 180, 0.2)",
                borderColor: null,
                borderWidth: 0,
                borderType: "solid",
                borderRadius: 0,
                shadowBlur: 0,
                shadowColor: null,
                shadowOffsetX: 0,
                shadowOffsetY: 0,
                opacity: 1
            }
        }
    });
    var kv = Qc([ [ "fill", "color" ], [ "stroke", "borderColor" ], [ "lineWidth", "borderWidth" ], [ "stroke", "barBorderColor" ], [ "lineWidth", "barBorderWidth" ], [ "opacity" ], [ "shadowBlur" ], [ "shadowOffsetX" ], [ "shadowOffsetY" ], [ "shadowColor" ] ]), Pv = {
        getBarItemStyle: function(t) {
            var e = kv(this, t);
            if (this.getBorderLineDash) {
                var n = this.getBorderLineDash();
                n && (e.lineDash = n);
            }
            return e;
        }
    }, Lv = pi({
        type: "sausage",
        shape: {
            cx: 0,
            cy: 0,
            r0: 0,
            r: 0,
            startAngle: 0,
            endAngle: 2 * Math.PI,
            clockwise: !0
        },
        buildPath: function(t, e) {
            var n = e.cx, i = e.cy, r = Math.max(e.r0 || 0, 0), o = Math.max(e.r, 0), a = .5 * (o - r), s = r + a, l = e.startAngle, u = e.endAngle, h = e.clockwise, c = Math.cos(l), d = Math.sin(l), f = Math.cos(u), p = Math.sin(u);
            (h ? u - l < 2 * Math.PI : l - u < 2 * Math.PI) && (t.moveTo(c * r + n, d * r + i), 
            t.arc(c * s + n, d * s + i, a, -Math.PI + l, l, !h)), t.arc(n, i, o, l, u, !h), 
            t.moveTo(f * o + n, p * o + i), t.arc(f * s + n, p * s + i, a, u - 2 * Math.PI, u - Math.PI, !h), 
            0 !== r && (t.arc(n, i, r, u, l, h), t.moveTo(c * r + n, p * r + i)), t.closePath();
        }
    }), Ov = [ "itemStyle", "barBorderWidth" ], Ev = [ 0, 0 ];
    a($i.prototype, Pv), ba({
        type: "bar",
        render: function(t, e, n) {
            this._updateDrawMode(t);
            var i = t.get("coordinateSystem");
            return "cartesian2d" === i || "polar" === i ? this._isLargeDraw ? this._renderLarge(t, e, n) : this._renderNormal(t, e, n) : Lu && console.warn("Only cartesian2d and polar supported for bar."), 
            this.group;
        },
        incrementalPrepareRender: function(t) {
            this._clear(), this._updateDrawMode(t);
        },
        incrementalRender: function(t, e) {
            this._incrementalRenderLarge(t, e);
        },
        _updateDrawMode: function(t) {
            var e = t.pipelineContext.large;
            (null == this._isLargeDraw || e ^ this._isLargeDraw) && (this._isLargeDraw = e, 
            this._clear());
        },
        _renderNormal: function(t) {
            var e, n = this.group, i = t.getData(), r = this._data, o = t.coordinateSystem, a = o.getBaseAxis();
            "cartesian2d" === o.type ? e = a.isHorizontal() : "polar" === o.type && (e = "angle" === a.dim);
            var s = t.isAnimationEnabled() ? t : null, l = t.get("clip", !0), u = function(t, e) {
                var n = t.getArea && t.getArea();
                if ("cartesian2d" === t.type) {
                    var i = t.getBaseAxis();
                    if ("category" !== i.type || !i.onBand) {
                        var r = e.getLayout("bandWidth");
                        i.isHorizontal() ? (n.x -= r, n.width += 2 * r) : (n.y -= r, n.height += 2 * r);
                    }
                }
                return n;
            }(o, i);
            n.removeClipPath();
            var h = t.get("roundCap", !0), c = t.get("showBackground", !0), d = t.getModel("backgroundStyle"), f = d.get("barBorderRadius") || 0, p = [], g = this._backgroundEls || [], m = function(t) {
                var n = Fv[o.type](i, t), r = function(t, e, n) {
                    return new ("polar" === t.type ? hf : yf)({
                        shape: Qs(e, n, t),
                        silent: !0,
                        z2: 0
                    });
                }(o, e, n);
                return r.useStyle(d.getBarItemStyle()), "cartesian2d" === o.type && r.setShape("r", f), 
                p[t] = r, r;
            };
            i.diff(r).add(function(r) {
                var a = i.getItemModel(r), d = Fv[o.type](i, r, a);
                if (c && m(r), i.hasValue(r)) {
                    if (l) if (zv[o.type](u, d)) return void n.remove(f);
                    var f = Rv[o.type](r, d, e, s, !1, h);
                    i.setItemGraphicEl(r, f), n.add(f), Ks(f, i, r, a, d, t, e, "polar" === o.type);
                }
            }).update(function(a, v) {
                var y = i.getItemModel(a), x = Fv[o.type](i, a, y);
                if (c) {
                    var _;
                    0 === g.length ? _ = m(v) : ((_ = g[v]).useStyle(d.getBarItemStyle()), "cartesian2d" === o.type && _.setShape("r", f), 
                    p[a] = _);
                    var w = Fv[o.type](i, a);
                    Xi(_, {
                        shape: Qs(e, w, o)
                    }, s, a);
                }
                var b = r.getItemGraphicEl(v);
                if (i.hasValue(a)) {
                    if (l) if (zv[o.type](u, x)) return void n.remove(b);
                    b ? Xi(b, {
                        shape: x
                    }, s, a) : b = Rv[o.type](a, x, e, s, !0, h), i.setItemGraphicEl(a, b), n.add(b), 
                    Ks(b, i, a, y, x, t, e, "polar" === o.type);
                } else n.remove(b);
            }).remove(function(t) {
                var e = r.getItemGraphicEl(t);
                "cartesian2d" === o.type ? e && qs(t, s, e) : e && js(t, s, e);
            }).execute();
            var v = this._backgroundGroup || (this._backgroundGroup = new jh());
            v.removeAll();
            for (var y = 0; y < p.length; ++y) v.add(p[y]);
            n.add(v), this._backgroundEls = p, this._data = i;
        },
        _renderLarge: function(t) {
            this._clear(), $s(t, this.group);
            var e = t.get("clip", !0) ? function(t, e, n) {
                return t ? "polar" === t.type ? Ys(t, e, n) : "cartesian2d" === t.type ? Us(t, e, n) : null : null;
            }(t.coordinateSystem, !1, t) : null;
            e ? this.group.setClipPath(e) : this.group.removeClipPath();
        },
        _incrementalRenderLarge: function(t, e) {
            this._removeBackground(), $s(e, this.group, !0);
        },
        dispose: R,
        remove: function(t) {
            this._clear(t);
        },
        _clear: function(t) {
            var e = this.group, n = this._data;
            t && t.get("animation") && n && !this._isLargeDraw ? (this._removeBackground(), 
            this._backgroundEls = [], n.eachItemGraphicEl(function(e) {
                "sector" === e.type ? js(e.dataIndex, t, e) : qs(e.dataIndex, t, e);
            })) : e.removeAll(), this._data = null;
        },
        _removeBackground: function() {
            this.group.remove(this._backgroundGroup), this._backgroundGroup = null;
        }
    });
    var Bv = Math.max, Nv = Math.min, zv = {
        cartesian2d: function(t, e) {
            var n = e.width < 0 ? -1 : 1, i = e.height < 0 ? -1 : 1;
            0 > n && (e.x += e.width, e.width = -e.width), 0 > i && (e.y += e.height, e.height = -e.height);
            var r = Bv(e.x, t.x), o = Nv(e.x + e.width, t.x + t.width), a = Bv(e.y, t.y), s = Nv(e.y + e.height, t.y + t.height);
            e.x = r, e.y = a, e.width = o - r, e.height = s - a;
            var l = e.width < 0 || e.height < 0;
            return 0 > n && (e.x += e.width, e.width = -e.width), 0 > i && (e.y += e.height, 
            e.height = -e.height), l;
        },
        polar: function(t, e) {
            var n = e.r0 <= e.r ? 1 : -1;
            if (0 > n) {
                var i = e.r;
                e.r = e.r0, e.r0 = i;
            }
            i = Nv(e.r, t.r);
            var r = Bv(e.r0, t.r0);
            e.r = i, e.r0 = r;
            var o = 0 > i - r;
            if (0 > n) {
                i = e.r;
                e.r = e.r0, e.r0 = i;
            }
            return o;
        }
    }, Rv = {
        cartesian2d: function(t, e, n, i, r) {
            var o = new yf({
                shape: a({}, e),
                z2: 1
            });
            if (o.name = "item", i) {
                var s = n ? "height" : "width", l = {};
                o.shape[s] = 0, l[s] = e[s], Gf[r ? "updateProps" : "initProps"](o, {
                    shape: l
                }, i, t);
            }
            return o;
        },
        polar: function(t, e, n, i, r, o) {
            var a = e.startAngle < e.endAngle, l = new (!n && o ? Lv : hf)({
                shape: s({
                    clockwise: a
                }, e),
                z2: 1
            });
            if (l.name = "item", i) {
                var u = n ? "r" : "endAngle", h = {};
                l.shape[u] = n ? 0 : e.startAngle, h[u] = e[u], Gf[r ? "updateProps" : "initProps"](l, {
                    shape: h
                }, i, t);
            }
            return l;
        }
    }, Fv = {
        cartesian2d: function(t, e, n) {
            var i = t.getItemLayout(e), r = n ? function(t, e) {
                var n = t.get(Ov) || 0, i = isNaN(e.width) ? Number.MAX_VALUE : Math.abs(e.width), r = isNaN(e.height) ? Number.MAX_VALUE : Math.abs(e.height);
                return Math.min(n, i, r);
            }(n, i) : 0, o = i.width > 0 ? 1 : -1, a = i.height > 0 ? 1 : -1;
            return {
                x: i.x + o * r / 2,
                y: i.y + a * r / 2,
                width: i.width - o * r,
                height: i.height - a * r
            };
        },
        polar: function(t, e) {
            var n = t.getItemLayout(e);
            return {
                cx: n.cx,
                cy: n.cy,
                r0: n.r0,
                r: n.r,
                startAngle: n.startAngle,
                endAngle: n.endAngle
            };
        }
    }, Vv = ii.extend({
        type: "largeBar",
        shape: {
            points: []
        },
        buildPath: function(t, e) {
            for (var n = e.points, i = this.__startPoint, r = this.__baseDimIdx, o = 0; o < n.length; o += 2) i[r] = n[o + r], 
            t.moveTo(i[0], i[1]), t.lineTo(n[o], n[o + 1]);
        }
    }), Hv = Mo(function(t) {
        var e = function(t, e, n) {
            var i = t.__baseDimIdx, r = 1 - i, o = t.shape.points, a = t.__largeDataIndices, s = Math.abs(t.__barWidth / 2), l = t.__startPoint[r];
            Ev[0] = e, Ev[1] = n;
            for (var u = Ev[i], h = Ev[1 - i], c = u - s, d = u + s, f = 0, p = o.length / 2; p > f; f++) {
                var g = 2 * f, m = o[g + i], v = o[g + r];
                if (m >= c && d >= m && (v >= l ? h >= l && v >= h : h >= v && l >= h)) return a[f];
            }
            return -1;
        }(this, t.offsetX, t.offsetY);
        this.dataIndex = e >= 0 ? e : null;
    }, 30, !1), Gv = Math.PI, Wv = function(t, e) {
        this.opt = e, this.axisModel = t, s(e, {
            labelOffset: 0,
            nameDirection: 1,
            tickDirection: 1,
            labelDirection: 1,
            silent: !0
        }), this.group = new jh();
        var n = new jh({
            position: e.position.slice(),
            rotation: e.rotation
        });
        n.updateTransform(), this._transform = n.transform, this._dumbGroup = n;
    };
    Wv.prototype = {
        constructor: Wv,
        hasBuilder: function(t) {
            return !!Xv[t];
        },
        add: function(t) {
            Xv[t].call(this);
        },
        getGroup: function() {
            return this.group;
        }
    };
    var Xv = {
        axisLine: function() {
            var t = this.opt, e = this.axisModel;
            if (e.get("axisLine.show")) {
                var n = this.axisModel.axis.getExtent(), i = this._transform, r = [ n[0], 0 ], o = [ n[1], 0 ];
                i && ($(r, r, i), $(o, o, i));
                var s = a({
                    lineCap: "round"
                }, e.getModel("axisLine.lineStyle").getLineStyle());
                this.group.add(new _f({
                    anid: "line",
                    subPixelOptimize: !0,
                    shape: {
                        x1: r[0],
                        y1: r[1],
                        x2: o[0],
                        y2: o[1]
                    },
                    style: s,
                    strokeContainThreshold: t.strokeContainThreshold || 5,
                    silent: !0,
                    z2: 1
                }));
                var l = e.get("axisLine.symbol"), u = e.get("axisLine.symbolSize"), h = e.get("axisLine.symbolOffset") || 0;
                if ("number" == typeof h && (h = [ h, h ]), null != l) {
                    "string" == typeof l && (l = [ l, l ]), ("string" == typeof u || "number" == typeof u) && (u = [ u, u ]);
                    var c = u[0], d = u[1];
                    f([ {
                        rotate: t.rotation + Math.PI / 2,
                        offset: h[0],
                        r: 0
                    }, {
                        rotate: t.rotation - Math.PI / 2,
                        offset: h[1],
                        r: Math.sqrt((r[0] - o[0]) * (r[0] - o[0]) + (r[1] - o[1]) * (r[1] - o[1]))
                    } ], function(e, n) {
                        if ("none" !== l[n] && null != l[n]) {
                            var i = _s(l[n], -c / 2, -d / 2, c, d, s.stroke, !0), o = e.r + e.offset, a = [ r[0] + o * Math.cos(t.rotation), r[1] - o * Math.sin(t.rotation) ];
                            i.attr({
                                rotation: e.rotate,
                                position: a,
                                silent: !0,
                                z2: 11
                            }), this.group.add(i);
                        }
                    }, this);
                }
            }
        },
        axisTickLabel: function() {
            var t = this.axisModel, e = this.opt, n = function(t, e, n) {
                var i = e.axis, r = e.getModel("axisTick");
                if (r.get("show") && !i.scale.isBlank()) {
                    for (var o = r.getModel("lineStyle"), a = n.tickDirection * r.get("length"), l = nl(i.getTicksCoords(), t._transform, a, s(o.getLineStyle(), {
                        stroke: e.get("axisLine.lineStyle.color")
                    }), "ticks"), u = 0; u < l.length; u++) t.group.add(l[u]);
                    return l;
                }
            }(this, t, e), i = function(t, e, n) {
                var i = e.axis;
                if (C(n.axisLabelShow, e.get("axisLabel.show")) && !i.scale.isBlank()) {
                    var r = e.getModel("axisLabel"), o = r.get("margin"), a = i.getViewLabels(), s = (C(n.labelRotate, r.get("rotate")) || 0) * Gv / 180, l = Yv(n.rotation, s, n.labelDirection), u = e.getCategories && e.getCategories(!0), h = [], c = qv(e), d = e.get("triggerEvent");
                    return f(a, function(a, s) {
                        var f = a.tickValue, p = a.formattedLabel, g = a.rawLabel, m = r;
                        u && u[f] && u[f].textStyle && (m = new $i(u[f].textStyle, r, e.ecModel));
                        var v = m.getTextColor() || e.get("axisLine.lineStyle.color"), y = [ i.dataToCoord(f), n.labelOffset + n.labelDirection * o ], x = new af({
                            anid: "label_" + f,
                            position: y,
                            rotation: l.rotation,
                            silent: c,
                            z2: 10
                        });
                        Ni(x.style, m, {
                            text: p,
                            textAlign: m.getShallow("align", !0) || l.textAlign,
                            textVerticalAlign: m.getShallow("verticalAlign", !0) || m.getShallow("baseline", !0) || l.textVerticalAlign,
                            textFill: "function" == typeof v ? v("category" === i.type ? g : "value" === i.type ? f + "" : f, s) : v
                        }), d && (x.eventData = Uv(e), x.eventData.targetType = "axisLabel", x.eventData.value = g), 
                        t._dumbGroup.add(x), x.updateTransform(), h.push(x), t.group.add(x), x.decomposeTransform();
                    }), h;
                }
            }(this, t, e);
            (function(t, e, n) {
                if (!ys(t.axis)) {
                    var i = t.get("axisLabel.showMinLabel"), r = t.get("axisLabel.showMaxLabel");
                    n = n || [];
                    var o = (e = e || [])[0], a = e[1], s = e[e.length - 1], l = e[e.length - 2], u = n[0], h = n[1], c = n[n.length - 1], d = n[n.length - 2];
                    !1 === i ? (Js(o), Js(u)) : tl(o, a) && (i ? (Js(a), Js(h)) : (Js(o), Js(u))), !1 === r ? (Js(s), 
                    Js(c)) : tl(l, s) && (r ? (Js(l), Js(d)) : (Js(s), Js(c)));
                }
            })(t, i, n), function(t, e, n) {
                var i = e.axis, r = e.getModel("minorTick");
                if (r.get("show") && !i.scale.isBlank()) {
                    var o = i.getMinorTicksCoords();
                    if (o.length) for (var a = r.getModel("lineStyle"), l = n.tickDirection * r.get("length"), u = s(a.getLineStyle(), s(e.getModel("axisTick").getLineStyle(), {
                        stroke: e.get("axisLine.lineStyle.color")
                    })), h = 0; h < o.length; h++) for (var c = nl(o[h], t._transform, l, u, "minorticks_" + h), d = 0; d < c.length; d++) t.group.add(c[d]);
                }
            }(this, t, e);
        },
        axisName: function() {
            var t = this.opt, e = this.axisModel, n = C(t.axisName, e.get("name"));
            if (n) {
                var i, r, o = e.get("nameLocation"), s = t.nameDirection, l = e.getModel("nameTextStyle"), u = e.get("nameGap") || 0, h = this.axisModel.axis.getExtent(), c = h[0] > h[1] ? -1 : 1, d = [ "start" === o ? h[0] - c * u : "end" === o ? h[1] + c * u : (h[0] + h[1]) / 2, el(o) ? t.labelOffset + s * u : 0 ], f = e.get("nameRotate");
                null != f && (f = f * Gv / 180), el(o) ? i = Yv(t.rotation, null != f ? f : t.rotation, s) : (i = function(t, e, n, i) {
                    var r, o, a = lr(n - t.rotation), s = i[0] > i[1], l = "start" === e && !s || "start" !== e && s;
                    return ur(a - Gv / 2) ? (o = l ? "bottom" : "top", r = "center") : ur(a - 1.5 * Gv) ? (o = l ? "top" : "bottom", 
                    r = "center") : (o = "middle", r = 1.5 * Gv > a && a > Gv / 2 ? l ? "left" : "right" : l ? "right" : "left"), 
                    {
                        rotation: a,
                        textAlign: r,
                        textVerticalAlign: o
                    };
                }(t, o, f || 0, h), null != (r = t.axisNameAvailableWidth) && (r = Math.abs(r / Math.sin(i.rotation)), 
                !isFinite(r) && (r = null)));
                var p = l.getFont(), g = e.get("nameTruncate", !0) || {}, m = g.ellipsis, v = C(t.nameTruncateMaxWidth, g.maxWidth, r), y = null != m && null != v ? rp(n, v, p, m, {
                    minChar: 2,
                    placeholder: g.placeholder
                }) : n, x = e.get("tooltip", !0), _ = e.mainType, w = {
                    componentType: _,
                    name: n,
                    $vars: [ "name" ]
                };
                w[_ + "Index"] = e.componentIndex;
                var b = new af({
                    anid: "name",
                    __fullText: n,
                    __truncatedText: y,
                    position: d,
                    rotation: i.rotation,
                    silent: qv(e),
                    z2: 1,
                    tooltip: x && x.show ? a({
                        content: n,
                        formatter: function() {
                            return n;
                        },
                        formatterParams: w
                    }, x) : null
                });
                Ni(b.style, l, {
                    text: y,
                    textFont: p,
                    textFill: l.getTextColor() || e.get("axisLine.lineStyle.color"),
                    textAlign: l.get("align") || i.textAlign,
                    textVerticalAlign: l.get("verticalAlign") || i.textVerticalAlign
                }), e.get("triggerEvent") && (b.eventData = Uv(e), b.eventData.targetType = "axisName", 
                b.eventData.name = n), this._dumbGroup.add(b), b.updateTransform(), this.group.add(b), 
                b.decomposeTransform();
            }
        }
    }, Uv = Wv.makeAxisEventDataBase = function(t) {
        var e = {
            componentType: t.mainType,
            componentIndex: t.componentIndex
        };
        return e[t.mainType + "Index"] = t.componentIndex, e;
    }, Yv = Wv.innerTextLayout = function(t, e, n) {
        var i, r, o = lr(e - t);
        return ur(o) ? (r = n > 0 ? "top" : "bottom", i = "center") : ur(o - Gv) ? (r = n > 0 ? "bottom" : "top", 
        i = "center") : (r = "middle", i = o > 0 && Gv > o ? n > 0 ? "right" : "left" : n > 0 ? "left" : "right"), 
        {
            rotation: o,
            textAlign: i,
            textVerticalAlign: r
        };
    }, qv = Wv.isLabelSilent = function(t) {
        var e = t.get("tooltip");
        return t.get("silent") || !(t.get("triggerEvent") || e && e.show);
    }, jv = f, Zv = y, Kv = _a({
        type: "axis",
        _axisPointer: null,
        axisPointerClass: null,
        render: function(t, e, n, i) {
            this.axisPointerClass && al(t), Kv.superApply(this, "render", arguments), hl(this, t, 0, n, 0, !0);
        },
        updateAxisPointer: function(t, e, n, i) {
            hl(this, t, 0, n, 0, !1);
        },
        remove: function(t, e) {
            var n = this._axisPointer;
            n && n.remove(e), Kv.superApply(this, "remove", arguments);
        },
        dispose: function(t, e) {
            cl(this, e), Kv.superApply(this, "dispose", arguments);
        }
    }), $v = [];
    Kv.registerAxisPointerClass = function(t, e) {
        if (Lu && $v[t]) throw new Error("axisPointer " + t + " exists");
        $v[t] = e;
    }, Kv.getAxisPointerClass = function(t) {
        return t && $v[t];
    };
    var Qv = [ "axisLine", "axisTickLabel", "axisName" ], Jv = [ "splitArea", "splitLine", "minorSplitLine" ], ty = Kv.extend({
        type: "cartesianAxis",
        axisPointerClass: "CartesianAxisPointer",
        render: function(t, e, n, i) {
            this.group.removeAll();
            var r = this._axisGroup;
            if (this._axisGroup = new jh(), this.group.add(this._axisGroup), t.get("show")) {
                var o = t.getCoordSysModel(), a = dl(o, t), s = new Wv(t, a);
                f(Qv, s.add, s), this._axisGroup.add(s.getGroup()), f(Jv, function(e) {
                    t.get(e + ".show") && this["_" + e](t, o);
                }, this), qi(r, this._axisGroup, t), ty.superCall(this, "render", t, e, n, i);
            }
        },
        remove: function() {
            !function(t) {
                t.__splitAreaColors = null;
            }(this);
        },
        _splitLine: function(t, e) {
            var n = t.axis;
            if (!n.scale.isBlank()) {
                var i = t.getModel("splitLine"), r = i.getModel("lineStyle"), o = r.get("color");
                o = x(o) ? o : [ o ];
                for (var a = e.coordinateSystem.getRect(), l = n.isHorizontal(), u = 0, h = n.getTicksCoords({
                    tickModel: i
                }), c = [], d = [], f = r.getLineStyle(), p = 0; p < h.length; p++) {
                    var g = n.toGlobalCoord(h[p].coord);
                    l ? (c[0] = g, c[1] = a.y, d[0] = g, d[1] = a.y + a.height) : (c[0] = a.x, c[1] = g, 
                    d[0] = a.x + a.width, d[1] = g);
                    var m = u++ % o.length, v = h[p].tickValue;
                    this._axisGroup.add(new _f({
                        anid: null != v ? "line_" + h[p].tickValue : null,
                        subPixelOptimize: !0,
                        shape: {
                            x1: c[0],
                            y1: c[1],
                            x2: d[0],
                            y2: d[1]
                        },
                        style: s({
                            stroke: o[m]
                        }, f),
                        silent: !0
                    }));
                }
            }
        },
        _minorSplitLine: function(t, e) {
            var n = t.axis, i = t.getModel("minorSplitLine").getModel("lineStyle"), r = e.coordinateSystem.getRect(), o = n.isHorizontal(), a = n.getMinorTicksCoords();
            if (a.length) for (var s = [], l = [], u = i.getLineStyle(), h = 0; h < a.length; h++) for (var c = 0; c < a[h].length; c++) {
                var d = n.toGlobalCoord(a[h][c].coord);
                o ? (s[0] = d, s[1] = r.y, l[0] = d, l[1] = r.y + r.height) : (s[0] = r.x, s[1] = d, 
                l[0] = r.x + r.width, l[1] = d), this._axisGroup.add(new _f({
                    anid: "minor_line_" + a[h][c].tickValue,
                    subPixelOptimize: !0,
                    shape: {
                        x1: s[0],
                        y1: s[1],
                        x2: l[0],
                        y2: l[1]
                    },
                    style: u,
                    silent: !0
                }));
            }
        },
        _splitArea: function(t, e) {
            !function(t, e, n, i) {
                var r = n.axis;
                if (!r.scale.isBlank()) {
                    var o = n.getModel("splitArea"), a = o.getModel("areaStyle"), l = a.get("color"), u = i.coordinateSystem.getRect(), h = r.getTicksCoords({
                        tickModel: o,
                        clamp: !0
                    });
                    if (h.length) {
                        var c = l.length, d = t.__splitAreaColors, f = z(), p = 0;
                        if (d) for (var g = 0; g < h.length; g++) {
                            var m = d.get(h[g].tickValue);
                            if (null != m) {
                                p = (m + (c - 1) * g) % c;
                                break;
                            }
                        }
                        var v = r.toGlobalCoord(h[0].coord), y = a.getAreaStyle();
                        l = x(l) ? l : [ l ];
                        for (g = 1; g < h.length; g++) {
                            var _, w, b, S, M = r.toGlobalCoord(h[g].coord);
                            r.isHorizontal() ? (_ = v, w = u.y, b = M - _, S = u.height, v = _ + b) : (_ = u.x, 
                            w = v, b = u.width, v = w + (S = M - w));
                            var I = h[g - 1].tickValue;
                            null != I && f.set(I, p), e.add(new yf({
                                anid: null != I ? "area_" + I : null,
                                shape: {
                                    x: _,
                                    y: w,
                                    width: b,
                                    height: S
                                },
                                style: s({
                                    fill: l[p]
                                }, y),
                                silent: !0
                            })), p = (p + 1) % c;
                        }
                        t.__splitAreaColors = f;
                    }
                }
            }(this, this._axisGroup, t, e);
        }
    });
    ty.extend({
        type: "xAxis"
    }), ty.extend({
        type: "yAxis"
    }), _a({
        type: "grid",
        render: function(t) {
            this.group.removeAll(), t.get("show") && this.group.add(new yf({
                shape: t.coordinateSystem.getRect(),
                style: s({
                    fill: t.get("backgroundColor")
                }, t.getItemStyle()),
                silent: !0,
                z2: -1
            }));
        }
    }), da(function(t) {
        t.xAxis && t.yAxis && !t.grid && (t.grid = {});
    }), ga(Yg.VISUAL.LAYOUT, y(function(t, e) {
        var n = rs(t, e), i = os(n), r = {};
        f(n, function(t) {
            var e = t.getData(), n = t.coordinateSystem, o = n.getBaseAxis(), a = ns(t), s = i[is(o)][a], l = s.offset, u = s.width, h = n.getOtherAxis(o), c = t.get("barMinHeight") || 0;
            r[a] = r[a] || [], e.setLayout({
                bandWidth: s.bandWidth,
                offset: l,
                size: u
            });
            for (var d = e.mapDimension(h.dim), f = e.mapDimension(o.dim), p = Ya(e, d), g = h.isHorizontal(), m = us(o, h), v = 0, y = e.count(); y > v; v++) {
                var x, _, w, b, S, M = e.get(d, v), I = e.get(f, v), T = M >= 0 ? "p" : "n", C = m;
                if (p && (r[a][I] || (r[a][I] = {
                    p: m,
                    n: m
                }), C = r[a][I][T]), g) x = C, _ = (S = n.dataToPoint([ M, I ]))[1] + l, w = S[0] - m, 
                b = u, Math.abs(w) < c && (w = (0 > w ? -1 : 1) * c), isNaN(w) || p && (r[a][I][T] += w); else x = (S = n.dataToPoint([ I, M ]))[0] + l, 
                _ = C, w = u, b = S[1] - m, Math.abs(b) < c && (b = (0 >= b ? -1 : 1) * c), isNaN(b) || p && (r[a][I][T] += b);
                e.setItemLayout(v, {
                    x: x,
                    y: _,
                    width: w,
                    height: b
                });
            }
        }, this);
    }, "bar")), ga(Yg.VISUAL.PROGRESSIVE_LAYOUT, zm), ma({
        seriesType: "bar",
        reset: function(t) {
            t.getData().setVisual("legendSymbol", "roundRect");
        }
    }), Qp.extend({
        type: "series.line",
        dependencies: [ "grid", "polar" ],
        getInitialData: function(t) {
            if (Lu) {
                var e = t.coordinateSystem;
                if ("polar" !== e && "cartesian2d" !== e) throw new Error("Line not support coordinateSystem besides cartesian and polar");
            }
            return ja(this.getSource(), this, {
                useEncodeDefaulter: !0
            });
        },
        defaultOption: {
            zlevel: 0,
            z: 2,
            coordinateSystem: "cartesian2d",
            legendHoverLink: !0,
            hoverAnimation: !0,
            clip: !0,
            label: {
                position: "top"
            },
            lineStyle: {
                width: 2,
                type: "solid"
            },
            step: !1,
            smooth: !1,
            smoothMonotone: null,
            symbol: "emptyCircle",
            symbolSize: 4,
            symbolRotate: null,
            showSymbol: !0,
            showAllSymbol: "auto",
            connectNulls: !1,
            sampling: "none",
            animationEasing: "linear",
            progressive: 0,
            hoverLayerThreshold: 1 / 0
        }
    });
    var ey = fl.prototype, ny = fl.getSymbolSize = function(t, e) {
        var n = t.getItemVisual(e, "symbolSize");
        return n instanceof Array ? n.slice() : [ +n, +n ];
    };
    ey._createSymbol = function(t, e, n, i, r) {
        this.removeAll();
        var o = _s(t, -1, -1, 2, 2, e.getItemVisual(n, "color"), r);
        o.attr({
            z2: 100,
            culling: !0,
            scale: pl(i)
        }), o.drift = gl, this._symbolType = t, this.add(o);
    }, ey.stopSymbolAnimation = function(t) {
        this.childAt(0).stopAnimation(t);
    }, ey.getSymbolPath = function() {
        return this.childAt(0);
    }, ey.getScale = function() {
        return this.childAt(0).scale;
    }, ey.highlight = function() {
        this.childAt(0).trigger("emphasis");
    }, ey.downplay = function() {
        this.childAt(0).trigger("normal");
    }, ey.setZ = function(t, e) {
        var n = this.childAt(0);
        n.zlevel = t, n.z = e;
    }, ey.setDraggable = function(t) {
        var e = this.childAt(0);
        e.draggable = t, e.cursor = t ? "move" : e.cursor;
    }, ey.updateData = function(t, e, n) {
        this.silent = !1;
        var i = t.getItemVisual(e, "symbol") || "circle", r = t.hostModel, o = ny(t, e), a = i !== this._symbolType;
        if (a) {
            var s = t.getItemVisual(e, "symbolKeepAspect");
            this._createSymbol(i, t, e, o, s);
        } else {
            (l = this.childAt(0)).silent = !1, Xi(l, {
                scale: pl(o)
            }, r, e);
        }
        if (this._updateCommon(t, e, o, n), a) {
            var l = this.childAt(0), u = n && n.fadeIn, h = {
                scale: l.scale.slice()
            };
            u && (h.style = {
                opacity: l.style.opacity
            }), l.scale = [ 0, 0 ], u && (l.style.opacity = 0), Ui(l, h, r, e);
        }
        this._seriesModel = r;
    };
    var iy = [ "itemStyle" ], ry = [ "emphasis", "itemStyle" ], oy = [ "label" ], ay = [ "emphasis", "label" ];
    ey._updateCommon = function(t, e, n, i) {
        var r = this.childAt(0), o = t.hostModel, s = t.getItemVisual(e, "color");
        "image" !== r.type ? r.useStyle({
            strokeNoScale: !0
        }) : r.setStyle({
            opacity: 1,
            shadowBlur: null,
            shadowOffsetX: null,
            shadowOffsetY: null,
            shadowColor: null
        });
        var l = i && i.itemStyle, u = i && i.hoverItemStyle, h = i && i.symbolOffset, c = i && i.labelModel, d = i && i.hoverLabelModel, f = i && i.hoverAnimation, p = i && i.cursorStyle;
        if (!i || t.hasItemOption) {
            var g = i && i.itemModel ? i.itemModel : t.getItemModel(e);
            l = g.getModel(iy).getItemStyle([ "color" ]), u = g.getModel(ry).getItemStyle(), 
            h = g.getShallow("symbolOffset"), c = g.getModel(oy), d = g.getModel(ay), f = g.getShallow("hoverAnimation"), 
            p = g.getShallow("cursor");
        } else u = a({}, u);
        var m = r.style, v = t.getItemVisual(e, "symbolRotate");
        r.attr("rotation", (v || 0) * Math.PI / 180 || 0), h && r.attr("position", [ nr(h[0], n[0]), nr(h[1], n[1]) ]), 
        p && r.attr("cursor", p), r.setColor(s, i && i.symbolInnerColor), r.setStyle(l);
        var y = t.getItemVisual(e, "opacity");
        null != y && (m.opacity = y);
        var x = t.getItemVisual(e, "liftZ"), _ = r.__z2Origin;
        null != x ? null == _ && (r.__z2Origin = r.z2, r.z2 += x) : null != _ && (r.z2 = _, 
        r.__z2Origin = null);
        var w = i && i.useNameLabel;
        Bi(m, u, c, d, {
            labelFetcher: o,
            labelDataIndex: e,
            defaultText: function(e) {
                return w ? t.getName(e) : Ws(t, e);
            },
            isRectText: !0,
            autoColor: s
        }), r.__symbolOriginalScale = pl(n), r.hoverStyle = u, r.highDownOnUpdate = f && o.isAnimationEnabled() ? ml : null, 
        Pi(r);
    }, ey.fadeOut = function(t, e) {
        var n = this.childAt(0);
        this.silent = n.silent = !0, !(e && e.keepLabel) && (n.style.text = null), Xi(n, {
            style: {
                opacity: 0
            },
            scale: [ 0, 0 ]
        }, this._seriesModel, this.dataIndex, t);
    }, h(fl, jh);
    var sy = vl.prototype;
    sy.updateData = function(t, e) {
        e = xl(e);
        var n = this.group, i = t.hostModel, r = this._data, o = this._symbolCtor, a = _l(t);
        r || n.removeAll(), t.diff(r).add(function(i) {
            var r = t.getItemLayout(i);
            if (yl(t, r, i, e)) {
                var s = new o(t, i, a);
                s.attr("position", r), t.setItemGraphicEl(i, s), n.add(s);
            }
        }).update(function(s, l) {
            var u = r.getItemGraphicEl(l), h = t.getItemLayout(s);
            return yl(t, h, s, e) ? (u ? (u.updateData(t, s, a), Xi(u, {
                position: h
            }, i)) : (u = new o(t, s)).attr("position", h), n.add(u), void t.setItemGraphicEl(s, u)) : void n.remove(u);
        }).remove(function(t) {
            var e = r.getItemGraphicEl(t);
            e && e.fadeOut(function() {
                n.remove(e);
            });
        }).execute(), this._data = t;
    }, sy.isPersistent = function() {
        return !0;
    }, sy.updateLayout = function() {
        var t = this._data;
        t && t.eachItemGraphicEl(function(e, n) {
            var i = t.getItemLayout(n);
            e.attr("position", i);
        });
    }, sy.incrementalPrepareUpdate = function(t) {
        this._seriesScope = _l(t), this._data = null, this.group.removeAll();
    }, sy.incrementalUpdate = function(t, e, n) {
        function i(t) {
            t.isGroup || (t.incremental = t.useHoverLayer = !0);
        }
        n = xl(n);
        for (var r = t.start; r < t.end; r++) {
            var o = e.getItemLayout(r);
            if (yl(e, o, r, n)) {
                var a = new this._symbolCtor(e, r, this._seriesScope);
                a.traverse(i), a.attr("position", o), this.group.add(a), e.setItemGraphicEl(r, a);
            }
        }
    }, sy.remove = function(t) {
        var e = this.group, n = this._data;
        n && t ? n.eachItemGraphicEl(function(t) {
            t.fadeOut(function() {
                e.remove(t);
            });
        }) : e.removeAll();
    };
    var ly = Q, uy = J, hy = W, cy = V, dy = [], fy = [], py = [], gy = ii.extend({
        type: "ec-polyline",
        shape: {
            points: [],
            smooth: 0,
            smoothConstraint: !0,
            smoothMonotone: null,
            connectNulls: !1
        },
        style: {
            fill: null,
            stroke: "#000"
        },
        brush: uf(ii.prototype.brush),
        buildPath: function(t, e) {
            var n = e.points, i = 0, r = n.length, o = Cl(n, e.smoothConstraint);
            if (e.connectNulls) {
                for (;r > 0 && Sl(n[r - 1]); r--) ;
                for (;r > i && Sl(n[i]); i++) ;
            }
            for (;r > i; ) i += Ml(t, n, i, r, r, 1, o.min, o.max, e.smooth, e.smoothMonotone, e.connectNulls) + 1;
        }
    }), my = ii.extend({
        type: "ec-polygon",
        shape: {
            points: [],
            stackedOnPoints: [],
            smooth: 0,
            stackedOnSmooth: 0,
            smoothConstraint: !0,
            smoothMonotone: null,
            connectNulls: !1
        },
        brush: uf(ii.prototype.brush),
        buildPath: function(t, e) {
            var n = e.points, i = e.stackedOnPoints, r = 0, o = n.length, a = e.smoothMonotone, s = Cl(n, e.smoothConstraint), l = Cl(i, e.smoothConstraint);
            if (e.connectNulls) {
                for (;o > 0 && Sl(n[o - 1]); o--) ;
                for (;o > r && Sl(n[r]); r++) ;
            }
            for (;o > r; ) {
                var u = Ml(t, n, r, o, o, 1, s.min, s.max, e.smooth, a, e.connectNulls);
                Ml(t, i, r + u - 1, u, o, -1, l.min, l.max, e.stackedOnSmooth, a, e.connectNulls), 
                r += u + 1, t.closePath();
            }
        }
    });
    xo.extend({
        type: "line",
        init: function() {
            var t = new jh(), e = new vl();
            this.group.add(e.group), this._symbolDraw = e, this._lineGroup = t;
        },
        render: function(t, e, n) {
            var i = t.coordinateSystem, r = this.group, o = t.getData(), a = t.getModel("lineStyle"), l = t.getModel("areaStyle"), u = o.mapArray(o.getItemLayout), h = "polar" === i.type, c = this._coordSys, d = this._symbolDraw, f = this._polyline, p = this._polygon, g = this._lineGroup, m = t.get("animation"), v = !l.isEmpty(), y = l.get("origin"), x = function(t, e, n) {
                if (!n.valueDim) return [];
                for (var i = [], r = 0, o = e.count(); o > r; r++) i.push(bl(n, t, e, r));
                return i;
            }(i, o, wl(i, o, y)), _ = t.get("showSymbol"), w = _ && !h && Ol(t, o, i), b = this._data;
            b && b.eachItemGraphicEl(function(t, e) {
                t.__temp && (r.remove(t), b.setItemGraphicEl(e, null));
            }), _ || d.remove(), r.add(g);
            var S, M = !h && t.get("step");
            i && i.getArea && t.get("clip", !0) && (null != (S = i.getArea()).width ? (S.x -= .1, 
            S.y -= .1, S.width += .2, S.height += .2) : S.r0 && (S.r0 -= .5, S.r1 += .5)), this._clipShapeForSymbol = S, 
            f && c.type === i.type && M === this._step ? (v && !p ? p = this._newPolygon(u, x, i, m) : p && !v && (g.remove(p), 
            p = this._polygon = null), g.setClipPath(El(i, !1, t)), _ && d.updateData(o, {
                isIgnore: w,
                clipShape: S
            }), o.eachItemGraphicEl(function(t) {
                t.stopAnimation(!0);
            }), Dl(this._stackedOnPoints, x) && Dl(this._points, u) || (m ? this._updateAnimation(o, x, i, n, M, y) : (M && (u = Pl(u, i, M), 
            x = Pl(x, i, M)), f.setShape({
                points: u
            }), p && p.setShape({
                points: u,
                stackedOnPoints: x
            })))) : (_ && d.updateData(o, {
                isIgnore: w,
                clipShape: S
            }), M && (u = Pl(u, i, M), x = Pl(x, i, M)), f = this._newPolyline(u, i, m), v && (p = this._newPolygon(u, x, i, m)), 
            g.setClipPath(El(i, !0, t)));
            var I = Ll(o, i) || o.getVisual("color");
            f.useStyle(s(a.getLineStyle(), {
                fill: "none",
                stroke: I,
                lineJoin: "bevel"
            }));
            var T = t.get("smooth");
            if (T = kl(t.get("smooth")), f.setShape({
                smooth: T,
                smoothMonotone: t.get("smoothMonotone"),
                connectNulls: t.get("connectNulls")
            }), p) {
                var C = o.getCalculationInfo("stackedOnSeries"), D = 0;
                p.useStyle(s(l.getAreaStyle(), {
                    fill: I,
                    opacity: .7,
                    lineJoin: "bevel"
                })), C && (D = kl(C.get("smooth"))), p.setShape({
                    smooth: T,
                    stackedOnSmooth: D,
                    smoothMonotone: t.get("smoothMonotone"),
                    connectNulls: t.get("connectNulls")
                });
            }
            this._data = o, this._coordSys = i, this._stackedOnPoints = x, this._points = u, 
            this._step = M, this._valueOrigin = y;
        },
        dispose: function() {},
        highlight: function(t, e, n, i) {
            var r = t.getData(), o = xn(r, i);
            if (!(o instanceof Array) && null != o && o >= 0) {
                var a = r.getItemGraphicEl(o);
                if (!a) {
                    var s = r.getItemLayout(o);
                    if (!s) return;
                    if (this._clipShapeForSymbol && !this._clipShapeForSymbol.contain(s[0], s[1])) return;
                    (a = new fl(r, o)).position = s, a.setZ(t.get("zlevel"), t.get("z")), a.ignore = isNaN(s[0]) || isNaN(s[1]), 
                    a.__temp = !0, r.setItemGraphicEl(o, a), a.stopSymbolAnimation(!0), this.group.add(a);
                }
                a.highlight();
            } else xo.prototype.highlight.call(this, t, e, n, i);
        },
        downplay: function(t, e, n, i) {
            var r = t.getData(), o = xn(r, i);
            if (null != o && o >= 0) {
                var a = r.getItemGraphicEl(o);
                a && (a.__temp ? (r.setItemGraphicEl(o, null), this.group.remove(a)) : a.downplay());
            } else xo.prototype.downplay.call(this, t, e, n, i);
        },
        _newPolyline: function(t) {
            var e = this._polyline;
            return e && this._lineGroup.remove(e), e = new gy({
                shape: {
                    points: t
                },
                silent: !0,
                z2: 10
            }), this._lineGroup.add(e), this._polyline = e, e;
        },
        _newPolygon: function(t, e) {
            var n = this._polygon;
            return n && this._lineGroup.remove(n), n = new my({
                shape: {
                    points: t,
                    stackedOnPoints: e
                },
                silent: !0
            }), this._lineGroup.add(n), this._polygon = n, n;
        },
        _updateAnimation: function(t, e, n, i, r, o) {
            var a = this._polyline, s = this._polygon, l = t.hostModel, u = function(t, e, n, i, r, o, a, s) {
                for (var l = function(t, e) {
                    var n = [];
                    return e.diff(t).add(function(t) {
                        n.push({
                            cmd: "+",
                            idx: t
                        });
                    }).update(function(t, e) {
                        n.push({
                            cmd: "=",
                            idx: e,
                            idx1: t
                        });
                    }).remove(function(t) {
                        n.push({
                            cmd: "-",
                            idx: t
                        });
                    }).execute(), n;
                }(t, e), u = [], h = [], c = [], d = [], f = [], p = [], g = [], m = wl(r, e, a), v = wl(o, t, s), y = 0; y < l.length; y++) {
                    var x = l[y], _ = !0;
                    switch (x.cmd) {
                      case "=":
                        var w = t.getItemLayout(x.idx), b = e.getItemLayout(x.idx1);
                        (isNaN(w[0]) || isNaN(w[1])) && (w = b.slice()), u.push(w), h.push(b), c.push(n[x.idx]), 
                        d.push(i[x.idx1]), g.push(e.getRawIndex(x.idx1));
                        break;

                      case "+":
                        var S = x.idx;
                        u.push(r.dataToPoint([ e.get(m.dataDimsForPoint[0], S), e.get(m.dataDimsForPoint[1], S) ])), 
                        h.push(e.getItemLayout(S).slice()), c.push(bl(m, r, e, S)), d.push(i[S]), g.push(e.getRawIndex(S));
                        break;

                      case "-":
                        S = x.idx;
                        var M = t.getRawIndex(S);
                        M !== S ? (u.push(t.getItemLayout(S)), h.push(o.dataToPoint([ t.get(v.dataDimsForPoint[0], S), t.get(v.dataDimsForPoint[1], S) ])), 
                        c.push(n[S]), d.push(bl(v, o, t, S)), g.push(M)) : _ = !1;
                    }
                    _ && (f.push(x), p.push(p.length));
                }
                p.sort(function(t, e) {
                    return g[t] - g[e];
                });
                var I = [], T = [], C = [], D = [], A = [];
                for (y = 0; y < p.length; y++) {
                    S = p[y];
                    I[y] = u[S], T[y] = h[S], C[y] = c[S], D[y] = d[S], A[y] = f[S];
                }
                return {
                    current: I,
                    next: T,
                    stackedOnCurrent: C,
                    stackedOnNext: D,
                    status: A
                };
            }(this._data, t, this._stackedOnPoints, e, this._coordSys, n, this._valueOrigin, o), h = u.current, c = u.stackedOnCurrent, d = u.next, f = u.stackedOnNext;
            if (r && (h = Pl(u.current, n, r), c = Pl(u.stackedOnCurrent, n, r), d = Pl(u.next, n, r), 
            f = Pl(u.stackedOnNext, n, r)), Al(h, d) > 3e3 || s && Al(c, f) > 3e3) return a.setShape({
                points: d
            }), void (s && s.setShape({
                points: d,
                stackedOnPoints: f
            }));
            a.shape.__points = u.current, a.shape.points = h, Xi(a, {
                shape: {
                    points: d
                }
            }, l), s && (s.setShape({
                points: h,
                stackedOnPoints: c
            }), Xi(s, {
                shape: {
                    points: d,
                    stackedOnPoints: f
                }
            }, l));
            for (var p = [], g = u.status, m = 0; m < g.length; m++) {
                if ("=" === g[m].cmd) {
                    var v = t.getItemGraphicEl(g[m].idx1);
                    v && p.push({
                        el: v,
                        ptIdx: m
                    });
                }
            }
            a.animators && a.animators.length && a.animators[0].during(function() {
                for (var t = 0; t < p.length; t++) {
                    p[t].el.attr("position", a.shape.__points[p[t].ptIdx]);
                }
            });
        },
        remove: function() {
            var t = this.group, e = this._data;
            this._lineGroup.removeAll(), this._symbolDraw.remove(!0), e && e.eachItemGraphicEl(function(n, i) {
                n.__temp && (t.remove(n), e.setItemGraphicEl(i, null));
            }), this._polyline = this._polygon = this._coordSys = this._points = this._stackedOnPoints = this._data = null;
        }
    });
    var vy = {
        average: function(t) {
            for (var e = 0, n = 0, i = 0; i < t.length; i++) isNaN(t[i]) || (e += t[i], n++);
            return 0 === n ? NaN : e / n;
        },
        sum: function(t) {
            for (var e = 0, n = 0; n < t.length; n++) e += t[n] || 0;
            return e;
        },
        max: function(t) {
            for (var e = -1 / 0, n = 0; n < t.length; n++) t[n] > e && (e = t[n]);
            return isFinite(e) ? e : NaN;
        },
        min: function(t) {
            for (var e = 1 / 0, n = 0; n < t.length; n++) t[n] < e && (e = t[n]);
            return isFinite(e) ? e : NaN;
        },
        nearest: function(t) {
            return t[0];
        }
    }, yy = function(t) {
        return Math.round(t.length / 2);
    };
    ma(function(t, e, n) {
        return {
            seriesType: t,
            performRawSeries: !0,
            reset: function(t, i) {
                var r = t.getData(), o = t.get("symbol"), a = t.get("symbolSize"), s = t.get("symbolKeepAspect"), l = t.get("symbolRotate"), u = _(o), h = _(a), c = _(l), d = u || h || c, f = !u && o ? o : e, p = h ? null : a;
                return r.setVisual({
                    legendSymbol: n || f,
                    symbol: f,
                    symbolSize: p,
                    symbolKeepAspect: s,
                    symbolRotate: l
                }), i.isSeriesFiltered(t) ? void 0 : {
                    dataEach: r.hasItemOption || d ? function(e, n) {
                        if (d) {
                            var i = t.getRawValue(n), r = t.getDataParams(n);
                            u && e.setItemVisual(n, "symbol", o(i, r)), h && e.setItemVisual(n, "symbolSize", a(i, r)), 
                            c && e.setItemVisual(n, "symbolRotate", l(i, r));
                        }
                        if (e.hasItemOption) {
                            var s = e.getItemModel(n), f = s.getShallow("symbol", !0), p = s.getShallow("symbolSize", !0), g = s.getShallow("symbolRotate", !0), m = s.getShallow("symbolKeepAspect", !0);
                            null != f && e.setItemVisual(n, "symbol", f), null != p && e.setItemVisual(n, "symbolSize", p), 
                            null != g && e.setItemVisual(n, "symbolRotate", g), null != m && e.setItemVisual(n, "symbolKeepAspect", m);
                        }
                    } : null
                };
            }
        };
    }("line", "circle", "line")), ga(function(t) {
        return {
            seriesType: t,
            plan: eg(),
            reset: function(t) {
                var e = t.getData(), n = t.coordinateSystem, i = t.pipelineContext.large;
                if (n) {
                    var r = p(n.dimensions, function(t) {
                        return e.mapDimension(t);
                    }).slice(0, 2), o = r.length, a = e.getCalculationInfo("stackResultDimension");
                    return Ya(e, r[0]) && (r[0] = a), Ya(e, r[1]) && (r[1] = a), o && {
                        progress: function(t, e) {
                            for (var a = t.end - t.start, s = i && new Float32Array(a * o), l = t.start, u = 0, h = [], c = []; l < t.end; l++) {
                                var d;
                                if (1 === o) {
                                    var f = e.get(r[0], l);
                                    d = !isNaN(f) && n.dataToPoint(f, null, c);
                                } else {
                                    f = h[0] = e.get(r[0], l);
                                    var p = h[1] = e.get(r[1], l);
                                    d = !isNaN(f) && !isNaN(p) && n.dataToPoint(h, null, c);
                                }
                                i ? (s[u++] = d ? d[0] : NaN, s[u++] = d ? d[1] : NaN) : e.setItemLayout(l, d && d.slice() || [ NaN, NaN ]);
                            }
                            i && e.setLayout("symbolPoints", s);
                        }
                    };
                }
            }
        };
    }("line")), fa(Yg.PROCESSOR.STATISTIC, function(t) {
        return {
            seriesType: t,
            modifyOutputEnd: !0,
            reset: function(t) {
                var e = t.getData(), n = t.get("sampling"), i = t.coordinateSystem;
                if ("cartesian2d" === i.type && n) {
                    var r, o = i.getBaseAxis(), a = i.getOtherAxis(o), s = o.getExtent(), l = Math.abs(s[1] - s[0]), u = Math.round(e.count() / l);
                    if (u > 1) "string" == typeof n ? r = vy[n] : "function" == typeof n && (r = n), 
                    r && t.setData(e.downSample(e.mapDimension(a.dim), 1 / u, r, yy));
                }
            }
        };
    }("line"));
    var xy = {
        updateSelectedMap: function(t) {
            this._targetList = x(t) ? t.slice() : [], this._selectTargetMap = g(t || [], function(t, e) {
                return t.set(e.name, e), t;
            }, z());
        },
        select: function(t, e) {
            var n = null != e ? this._targetList[e] : this._selectTargetMap.get(t);
            "single" === this.get("selectedMode") && this._selectTargetMap.each(function(t) {
                t.selected = !1;
            }), n && (n.selected = !0);
        },
        unSelect: function(t, e) {
            var n = null != e ? this._targetList[e] : this._selectTargetMap.get(t);
            n && (n.selected = !1);
        },
        toggleSelected: function(t, e) {
            var n = null != e ? this._targetList[e] : this._selectTargetMap.get(t);
            return null != n ? (this[n.selected ? "unSelect" : "select"](t, e), n.selected) : void 0;
        },
        isSelected: function(t, e) {
            var n = null != e ? this._targetList[e] : this._selectTargetMap.get(t);
            return n && n.selected;
        }
    }, _y = wa({
        type: "series.pie",
        init: function(t) {
            _y.superApply(this, "init", arguments), this.legendVisualProvider = new Bl(v(this.getData, this), v(this.getRawData, this)), 
            this.updateSelectedMap(this._createSelectableList()), this._defaultLabelLine(t);
        },
        mergeOption: function(t) {
            _y.superCall(this, "mergeOption", t), this.updateSelectedMap(this._createSelectableList());
        },
        getInitialData: function() {
            return function(t, e, n) {
                e = x(e) && {
                    coordDimensions: e
                } || a({}, e);
                var i = t.getSource(), r = Cm(i, e), o = new Mm(r, t);
                return o.initData(i, n), o;
            }(this, {
                coordDimensions: [ "value" ],
                encodeDefaulter: y(Pr, this)
            });
        },
        _createSelectableList: function() {
            for (var t = this.getRawData(), e = t.mapDimension("value"), n = [], i = 0, r = t.count(); r > i; i++) n.push({
                name: t.getName(i),
                value: t.get(e, i),
                selected: so(t, i, "selected")
            });
            return n;
        },
        getDataParams: function(t) {
            var e = this.getData(), n = _y.superCall(this, "getDataParams", t), i = [];
            return e.each(e.mapDimension("value"), function(t) {
                i.push(t);
            }), n.percent = sr(i, t, e.hostModel.get("percentPrecision")), n.$vars.push("percent"), 
            n;
        },
        _defaultLabelLine: function(t) {
            pn(t, "labelLine", [ "show" ]);
            var e = t.labelLine, n = t.emphasis.labelLine;
            e.show = e.show && t.label.show, n.show = n.show && t.emphasis.label.show;
        },
        defaultOption: {
            zlevel: 0,
            z: 2,
            legendHoverLink: !0,
            hoverAnimation: !0,
            center: [ "50%", "50%" ],
            radius: [ 0, "75%" ],
            clockwise: !0,
            startAngle: 90,
            minAngle: 0,
            minShowLabelAngle: 0,
            selectedOffset: 10,
            hoverOffset: 10,
            avoidLabelOverlap: !0,
            percentPrecision: 2,
            stillShowZeroSum: !0,
            left: 0,
            top: 0,
            right: 0,
            bottom: 0,
            width: null,
            height: null,
            label: {
                rotate: !1,
                show: !0,
                position: "outer",
                alignTo: "none",
                margin: "25%",
                bleedMargin: 10,
                distanceToLabelLine: 5
            },
            labelLine: {
                show: !0,
                length: 15,
                length2: 15,
                smooth: !1,
                lineStyle: {
                    width: 1,
                    type: "solid"
                }
            },
            itemStyle: {
                borderWidth: 1
            },
            animationType: "expansion",
            animationTypeUpdate: "transition",
            animationEasing: "cubicOut"
        }
    });
    c(_y, xy);
    var wy = Rl.prototype;
    wy.updateData = function(t, e, n) {
        var i = this.childAt(0), r = this.childAt(1), o = this.childAt(2), l = t.hostModel, u = t.getItemModel(e), h = t.getItemLayout(e), c = a({}, h);
        c.label = null;
        var d = l.getShallow("animationTypeUpdate");
        n ? (i.setShape(c), "scale" === l.getShallow("animationType") ? (i.shape.r = h.r0, 
        Ui(i, {
            shape: {
                r: h.r
            }
        }, l, e)) : (i.shape.endAngle = h.startAngle, Xi(i, {
            shape: {
                endAngle: h.endAngle
            }
        }, l, e))) : "expansion" === d ? i.setShape(c) : Xi(i, {
            shape: c
        }, l, e);
        var f = t.getItemVisual(e, "color");
        i.useStyle(s({
            lineJoin: "bevel",
            fill: f
        }, u.getModel("itemStyle").getItemStyle())), i.hoverStyle = u.getModel("emphasis.itemStyle").getItemStyle();
        var p = u.getShallow("cursor");
        p && i.attr("cursor", p), zl(this, t.getItemLayout(e), l.isSelected(t.getName(e)), l.get("selectedOffset"), l.get("animation"));
        var g = !n && "transition" === d;
        this._updateLabel(t, e, g), this.highDownOnUpdate = l.get("silent") ? null : function(t, e) {
            var n = l.isAnimationEnabled() && u.get("hoverAnimation");
            "emphasis" === e ? (r.ignore = r.hoverIgnore, o.ignore = o.hoverIgnore, n && (i.stopAnimation(!0), 
            i.animateTo({
                shape: {
                    r: h.r + l.get("hoverOffset")
                }
            }, 300, "elasticOut"))) : (r.ignore = r.normalIgnore, o.ignore = o.normalIgnore, 
            n && (i.stopAnimation(!0), i.animateTo({
                shape: {
                    r: h.r
                }
            }, 300, "elasticOut")));
        }, Pi(this);
    }, wy._updateLabel = function(t, e, n) {
        var i = this.childAt(1), r = this.childAt(2), o = t.hostModel, a = t.getItemModel(e), s = t.getItemLayout(e).label, l = t.getItemVisual(e, "color");
        if (!s || isNaN(s.x) || isNaN(s.y)) r.ignore = r.normalIgnore = r.hoverIgnore = i.ignore = i.normalIgnore = i.hoverIgnore = !0; else {
            var u = {
                points: s.linePoints || [ [ s.x, s.y ], [ s.x, s.y ], [ s.x, s.y ] ]
            }, h = {
                x: s.x,
                y: s.y
            };
            n ? (Xi(i, {
                shape: u
            }, o, e), Xi(r, {
                style: h
            }, o, e)) : (i.attr({
                shape: u
            }), r.attr({
                style: h
            })), r.attr({
                rotation: s.rotation,
                origin: [ s.x, s.y ],
                z2: 10
            });
            var c = a.getModel("label"), d = a.getModel("emphasis.label"), f = a.getModel("labelLine"), p = a.getModel("emphasis.labelLine");
            l = t.getItemVisual(e, "color");
            Bi(r.style, r.hoverStyle = {}, c, d, {
                labelFetcher: t.hostModel,
                labelDataIndex: e,
                defaultText: s.text,
                autoColor: l,
                useInsideStyle: !!s.inside
            }, {
                textAlign: s.textAlign,
                textVerticalAlign: s.verticalAlign,
                opacity: t.getItemVisual(e, "opacity")
            }), r.ignore = r.normalIgnore = !c.get("show"), r.hoverIgnore = !d.get("show"), 
            i.ignore = i.normalIgnore = !f.get("show"), i.hoverIgnore = !p.get("show"), i.setStyle({
                stroke: l,
                opacity: t.getItemVisual(e, "opacity")
            }), i.setStyle(f.getModel("lineStyle").getLineStyle()), i.hoverStyle = p.getModel("lineStyle").getLineStyle();
            var g = f.get("smooth");
            g && !0 === g && (g = .4), i.setShape({
                smooth: g
            });
        }
    }, h(Rl, jh);
    var by = (xo.extend({
        type: "pie",
        init: function() {
            var t = new jh();
            this._sectorGroup = t;
        },
        render: function(t, e, n, i) {
            if (!i || i.from !== this.uid) {
                var r = t.getData(), o = this._data, a = this.group, s = e.get("animation"), l = !o, u = t.get("animationType"), h = t.get("animationTypeUpdate"), c = y(Nl, this.uid, t, s, n), d = t.get("selectedMode");
                if (r.diff(o).add(function(t) {
                    var e = new Rl(r, t);
                    l && "scale" !== u && e.eachChild(function(t) {
                        t.stopAnimation(!0);
                    }), d && e.on("click", c), r.setItemGraphicEl(t, e), a.add(e);
                }).update(function(t, e) {
                    var n = o.getItemGraphicEl(e);
                    l || "transition" === h || n.eachChild(function(t) {
                        t.stopAnimation(!0);
                    }), n.updateData(r, t), n.off("click"), d && n.on("click", c), a.add(n), r.setItemGraphicEl(t, n);
                }).remove(function(t) {
                    var e = o.getItemGraphicEl(t);
                    a.remove(e);
                }).execute(), s && r.count() > 0 && (l ? "scale" !== u : "transition" !== h)) {
                    for (var f = r.getItemLayout(0), p = 1; isNaN(f.startAngle) && p < r.count(); ++p) f = r.getItemLayout(p);
                    var g = Math.max(n.getWidth(), n.getHeight()) / 2, m = v(a.removeClipPath, a);
                    a.setClipPath(this._createClipPath(f.cx, f.cy, g, f.startAngle, f.clockwise, m, t, l));
                } else a.removeClipPath();
                this._data = r;
            }
        },
        dispose: function() {},
        _createClipPath: function(t, e, n, i, r, o, a, s) {
            var l = new hf({
                shape: {
                    cx: t,
                    cy: e,
                    r0: 0,
                    r: n,
                    startAngle: i,
                    endAngle: i,
                    clockwise: r
                }
            });
            return (s ? Ui : Xi)(l, {
                shape: {
                    endAngle: i + (r ? 1 : -1) * Math.PI * 2
                }
            }, a, o), l;
        },
        containPoint: function(t, e) {
            var n = e.getData().getItemLayout(0);
            if (n) {
                var i = t[0] - n.cx, r = t[1] - n.cy, o = Math.sqrt(i * i + r * r);
                return o <= n.r && o >= n.r0;
            }
        }
    }), function(t, e) {
        f(e, function(e) {
            e.update = "updateView", pa(e, function(n, i) {
                var r = {};
                return i.eachComponent({
                    mainType: "series",
                    subType: t,
                    query: n
                }, function(t) {
                    t[e.method] && t[e.method](n.name, n.dataIndex);
                    var i = t.getData();
                    i.each(function(e) {
                        var n = i.getName(e);
                        r[n] = t.isSelected(n) || !1;
                    });
                }), {
                    name: n.name,
                    selected: r,
                    seriesId: n.seriesId
                };
            });
        });
    }), Sy = Math.PI / 180, My = function(t, e, n, i, r, o) {
        var a, s, l = t.getData(), u = [], h = !1, c = (t.get("minShowLabelAngle") || 0) * Sy;
        l.each(function(i) {
            var o = l.getItemLayout(i), d = l.getItemModel(i), f = d.getModel("label"), p = f.get("position") || d.get("emphasis.label.position"), g = f.get("distanceToLabelLine"), m = f.get("alignTo"), v = nr(f.get("margin"), n), y = f.get("bleedMargin"), x = f.getFont(), _ = d.getModel("labelLine"), w = _.get("length");
            w = nr(w, n);
            var b = _.get("length2");
            if (b = nr(b, n), !(o.angle < c)) {
                var S, M, I, T, C = (o.startAngle + o.endAngle) / 2, D = Math.cos(C), A = Math.sin(C);
                a = o.cx, s = o.cy;
                var k = t.getFormattedLabel(i, "normal") || l.getName(i), P = we(k, x, T, "top"), L = "inside" === p || "inner" === p;
                if ("center" === p) S = o.cx, M = o.cy, T = "center"; else {
                    var O = (L ? (o.r + o.r0) / 2 * D : o.r * D) + a, E = (L ? (o.r + o.r0) / 2 * A : o.r * A) + s;
                    if (S = O + 3 * D, M = E + 3 * A, !L) {
                        var B = O + D * (w + e - o.r), N = E + A * (w + e - o.r), z = B + (0 > D ? -1 : 1) * b;
                        S = "edge" === m ? 0 > D ? r + v : r + n - v : z + (0 > D ? -g : g), M = N, I = [ [ O, E ], [ B, N ], [ z, N ] ];
                    }
                    T = L ? "center" : "edge" === m ? D > 0 ? "right" : "left" : D > 0 ? "left" : "right";
                }
                var R, F = f.get("rotate");
                R = "number" == typeof F ? F * (Math.PI / 180) : F ? 0 > D ? -C + Math.PI : -C : 0, 
                h = !!R, o.label = {
                    x: S,
                    y: M,
                    position: p,
                    height: P.height,
                    len: w,
                    len2: b,
                    linePoints: I,
                    textAlign: T,
                    verticalAlign: "middle",
                    rotation: R,
                    inside: L,
                    labelDistance: g,
                    labelAlignTo: m,
                    labelMargin: v,
                    bleedMargin: y,
                    textRect: P,
                    text: k,
                    font: x
                }, L || u.push(o.label);
            }
        }), !h && t.get("avoidLabelOverlap") && function(t, e, n, i, r, o, a, s) {
            for (var l = [], u = [], h = Number.MAX_VALUE, c = -Number.MAX_VALUE, d = 0; d < t.length; d++) Vl(t[d]) || (t[d].x < e ? (h = Math.min(h, t[d].x), 
            l.push(t[d])) : (c = Math.max(c, t[d].x), u.push(t[d])));
            for (Fl(u, e, n, i, 1, 0, o, 0, s, c), Fl(l, e, n, i, -1, 0, o, 0, s, h), d = 0; d < t.length; d++) {
                var f = t[d];
                if (!Vl(f)) {
                    var p = f.linePoints;
                    if (p) {
                        var g, m = "edge" === f.labelAlignTo, v = f.textRect.width;
                        (g = m ? f.x < e ? p[2][0] - f.labelDistance - a - f.labelMargin : a + r - f.labelMargin - p[2][0] - f.labelDistance : f.x < e ? f.x - a - f.bleedMargin : a + r - f.x - f.bleedMargin) < f.textRect.width && (f.text = Ie(f.text, g, f.font), 
                        "edge" === f.labelAlignTo && (v = _e(f.text, f.font)));
                        var y = p[1][0] - p[2][0];
                        m ? p[2][0] = f.x < e ? a + f.labelMargin + v + f.labelDistance : a + r - f.labelMargin - v - f.labelDistance : (p[2][0] = f.x < e ? f.x + f.labelDistance : f.x - f.labelDistance, 
                        p[1][0] = p[2][0] + y), p[1][1] = p[2][1] = f.y;
                    }
                }
            }
        }(u, a, s, e, n, i, r, o);
    }, Iy = 2 * Math.PI, Ty = Math.PI / 180;
    by("pie", [ {
        type: "pieToggleSelect",
        event: "pieselectchanged",
        method: "toggleSelected"
    }, {
        type: "pieSelect",
        event: "pieselected",
        method: "select"
    }, {
        type: "pieUnSelect",
        event: "pieunselected",
        method: "unSelect"
    } ]), ma(function(t) {
        return {
            getTargetSeries: function(e) {
                var n = {}, i = z();
                return e.eachSeriesByType(t, function(t) {
                    t.__paletteScope = n, i.set(t.uid, t);
                }), i;
            },
            reset: function(t) {
                var e = t.getRawData(), n = {}, i = t.getData();
                i.each(function(t) {
                    var e = i.getRawIndex(t);
                    n[e] = t;
                }), e.each(function(r) {
                    var o, a = n[r], s = null != a && i.getItemVisual(a, "color", !0), l = null != a && i.getItemVisual(a, "borderColor", !0);
                    if (s && l || (o = e.getItemModel(r)), !s) {
                        var u = o.get("itemStyle.color") || t.getColorFromPalette(e.getName(r) || r + "", t.__paletteScope, e.count());
                        null != a && i.setItemVisual(a, "color", u);
                    }
                    if (!l) {
                        var h = o.get("itemStyle.borderColor");
                        null != a && i.setItemVisual(a, "borderColor", h);
                    }
                });
            }
        };
    }("pie")), ga(y(function(t, e, n) {
        e.eachSeriesByType(t, function(t) {
            var e = t.getData(), i = e.mapDimension("value"), r = function(t, e) {
                return Sr(t.getBoxLayoutParams(), {
                    width: e.getWidth(),
                    height: e.getHeight()
                });
            }(t, n), o = t.get("center"), a = t.get("radius");
            x(a) || (a = [ 0, a ]), x(o) || (o = [ o, o ]);
            var s = nr(r.width, n.getWidth()), l = nr(r.height, n.getHeight()), u = Math.min(s, l), h = nr(o[0], s) + r.x, c = nr(o[1], l) + r.y, d = nr(a[0], u / 2), f = nr(a[1], u / 2), p = -t.get("startAngle") * Ty, g = t.get("minAngle") * Ty, m = 0;
            e.each(i, function(t) {
                !isNaN(t) && m++;
            });
            var v = e.getSum(i), y = Math.PI / (v || m) * 2, _ = t.get("clockwise"), w = t.get("roseType"), b = t.get("stillShowZeroSum"), S = e.getDataExtent(i);
            S[0] = 0;
            var M = Iy, I = 0, T = p, C = _ ? 1 : -1;
            if (e.each(i, function(t, n) {
                var i;
                if (isNaN(t)) e.setItemLayout(n, {
                    angle: NaN,
                    startAngle: NaN,
                    endAngle: NaN,
                    clockwise: _,
                    cx: h,
                    cy: c,
                    r0: d,
                    r: w ? NaN : f,
                    viewRect: r
                }); else {
                    g > (i = "area" !== w ? 0 === v && b ? y : t * y : Iy / m) ? (i = g, M -= g) : I += t;
                    var o = T + C * i;
                    e.setItemLayout(n, {
                        angle: i,
                        startAngle: T,
                        endAngle: o,
                        clockwise: _,
                        cx: h,
                        cy: c,
                        r0: d,
                        r: w ? er(t, S, [ d, f ]) : f,
                        viewRect: r
                    }), T = o;
                }
            }), Iy > M && m) if (.001 >= M) {
                var D = Iy / m;
                e.each(i, function(t, n) {
                    if (!isNaN(t)) {
                        var i = e.getItemLayout(n);
                        i.angle = D, i.startAngle = p + C * n * D, i.endAngle = p + C * (n + 1) * D;
                    }
                });
            } else y = M / I, T = p, e.each(i, function(t, n) {
                if (!isNaN(t)) {
                    var i = e.getItemLayout(n), r = i.angle === g ? g : t * y;
                    i.startAngle = T, i.endAngle = T + C * r, T += C * r;
                }
            });
            My(t, f, r.width, r.height, r.x, r.y);
        });
    }, "pie")), fa(function(t) {
        return {
            seriesType: t,
            reset: function(t, e) {
                var n = e.findComponents({
                    mainType: "legend"
                });
                if (n && n.length) {
                    var i = t.getData();
                    i.filterSelf(function(t) {
                        for (var e = i.getName(t), r = 0; r < n.length; r++) if (!n[r].isSelected(e)) return !1;
                        return !0;
                    });
                }
            }
        };
    }("pie")), xa({
        type: "title",
        layoutMode: {
            type: "box",
            ignoreSize: !0
        },
        defaultOption: {
            zlevel: 0,
            z: 6,
            show: !0,
            text: "",
            target: "blank",
            subtext: "",
            subtarget: "blank",
            left: 0,
            top: 0,
            backgroundColor: "rgba(0,0,0,0)",
            borderColor: "#ccc",
            borderWidth: 0,
            padding: 5,
            itemGap: 10,
            textStyle: {
                fontSize: 18,
                fontWeight: "bolder",
                color: "#333"
            },
            subtextStyle: {
                color: "#aaa"
            }
        }
    }), _a({
        type: "title",
        render: function(t, e, n) {
            if (this.group.removeAll(), t.get("show")) {
                var i = this.group, r = t.getModel("textStyle"), o = t.getModel("subtextStyle"), a = t.get("textAlign"), s = D(t.get("textBaseline"), t.get("textVerticalAlign")), l = new af({
                    style: Ni({}, r, {
                        text: t.get("text"),
                        textFill: r.getTextColor()
                    }, {
                        disableBox: !0
                    }),
                    z2: 10
                }), u = l.getBoundingRect(), h = t.get("subtext"), c = new af({
                    style: Ni({}, o, {
                        text: h,
                        textFill: o.getTextColor(),
                        y: u.height + t.get("itemGap"),
                        textVerticalAlign: "top"
                    }, {
                        disableBox: !0
                    }),
                    z2: 10
                }), d = t.get("link"), f = t.get("sublink"), p = t.get("triggerEvent", !0);
                l.silent = !d && !p, c.silent = !f && !p, d && l.on("click", function() {
                    wr(d, "_" + t.get("target"));
                }), f && c.on("click", function() {
                    wr(f, "_" + t.get("subtarget"));
                }), l.eventData = c.eventData = p ? {
                    componentType: "title",
                    componentIndex: t.componentIndex
                } : null, i.add(l), h && i.add(c);
                var g = i.getBoundingRect(), m = t.getBoxLayoutParams();
                m.width = g.width, m.height = g.height;
                var v = Sr(m, {
                    width: n.getWidth(),
                    height: n.getHeight()
                }, t.get("padding"));
                a || ("middle" === (a = t.get("left") || t.get("right")) && (a = "center"), "right" === a ? v.x += v.width : "center" === a && (v.x += v.width / 2)), 
                s || ("center" === (s = t.get("top") || t.get("bottom")) && (s = "middle"), "bottom" === s ? v.y += v.height : "middle" === s && (v.y += v.height / 2), 
                s = s || "top"), i.attr("position", [ v.x, v.y ]);
                var y = {
                    textAlign: a,
                    textVerticalAlign: s
                };
                l.setStyle(y), c.setStyle(y), g = i.getBoundingRect();
                var x = v.margin, _ = t.getItemStyle([ "color", "opacity" ]);
                _.fill = t.get("backgroundColor");
                var w = new yf({
                    shape: {
                        x: g.x - x[3],
                        y: g.y - x[0],
                        width: g.width + x[1] + x[3],
                        height: g.height + x[0] + x[2],
                        r: t.get("borderRadius")
                    },
                    style: _,
                    subPixelOptimize: !0,
                    silent: !0
                });
                i.add(w);
            }
        }
    });
    var Cy = hg.legend.selector, Dy = {
        all: {
            type: "all",
            title: i(Cy.all)
        },
        inverse: {
            type: "inverse",
            title: i(Cy.inverse)
        }
    }, Ay = xa({
        type: "legend.plain",
        dependencies: [ "series" ],
        layoutMode: {
            type: "box",
            ignoreSize: !0
        },
        init: function(t, e, n) {
            this.mergeDefaultAndTheme(t, n), t.selected = t.selected || {}, this._updateSelector(t);
        },
        mergeOption: function(t) {
            Ay.superCall(this, "mergeOption", t), this._updateSelector(t);
        },
        _updateSelector: function(t) {
            var e = t.selector;
            !0 === e && (e = t.selector = [ "all", "inverse" ]), x(e) && f(e, function(t, n) {
                w(t) && (t = {
                    type: t
                }), e[n] = r(t, Dy[t.type]);
            });
        },
        optionUpdated: function() {
            this._updateData(this.ecModel);
            var t = this._data;
            if (t[0] && "single" === this.get("selectedMode")) {
                for (var e = !1, n = 0; n < t.length; n++) {
                    var i = t[n].get("name");
                    if (this.isSelected(i)) {
                        this.select(i), e = !0;
                        break;
                    }
                }
                !e && this.select(t[0].get("name"));
            }
        },
        _updateData: function(t) {
            var e = [], n = [];
            t.eachRawSeries(function(i) {
                var r, o = i.name;
                if (n.push(o), i.legendVisualProvider) {
                    var a = i.legendVisualProvider.getAllNames();
                    t.isSeriesFiltered(i) || (n = n.concat(a)), a.length ? e = e.concat(a) : r = !0;
                } else r = !0;
                r && vn(i) && e.push(i.name);
            }), this._availableNames = n;
            var i = p(this.get("data") || e, function(t) {
                return ("string" == typeof t || "number" == typeof t) && (t = {
                    name: t
                }), new $i(t, this, this.ecModel);
            }, this);
            this._data = i;
        },
        getData: function() {
            return this._data;
        },
        select: function(t) {
            var e = this.option.selected;
            "single" === this.get("selectedMode") && f(this._data, function(t) {
                e[t.get("name")] = !1;
            });
            e[t] = !0;
        },
        unSelect: function(t) {
            "single" !== this.get("selectedMode") && (this.option.selected[t] = !1);
        },
        toggleSelected: function(t) {
            var e = this.option.selected;
            e.hasOwnProperty(t) || (e[t] = !0), this[e[t] ? "unSelect" : "select"](t);
        },
        allSelect: function() {
            var t = this._data, e = this.option.selected;
            f(t, function(t) {
                e[t.get("name", !0)] = !0;
            });
        },
        inverseSelect: function() {
            var t = this._data, e = this.option.selected;
            f(t, function(t) {
                var n = t.get("name", !0);
                e.hasOwnProperty(n) || (e[n] = !0), e[n] = !e[n];
            });
        },
        isSelected: function(t) {
            var e = this.option.selected;
            return !(e.hasOwnProperty(t) && !e[t]) && u(this._availableNames, t) >= 0;
        },
        getOrient: function() {
            return "vertical" === this.get("orient") ? {
                index: 1,
                name: "vertical"
            } : {
                index: 0,
                name: "horizontal"
            };
        },
        defaultOption: {
            zlevel: 0,
            z: 4,
            show: !0,
            orient: "horizontal",
            left: "center",
            top: 0,
            align: "auto",
            backgroundColor: "rgba(0,0,0,0)",
            borderColor: "#ccc",
            borderRadius: 0,
            borderWidth: 0,
            padding: 5,
            itemGap: 10,
            itemWidth: 25,
            itemHeight: 14,
            inactiveColor: "#ccc",
            inactiveBorderColor: "#ccc",
            itemStyle: {
                borderWidth: 0
            },
            textStyle: {
                color: "#333"
            },
            selectedMode: !0,
            selector: !1,
            selectorLabel: {
                show: !0,
                borderRadius: 10,
                padding: [ 3, 5, 3, 5 ],
                fontSize: 12,
                fontFamily: " sans-serif",
                color: "#666",
                borderWidth: 1,
                borderColor: "#666"
            },
            emphasis: {
                selectorLabel: {
                    show: !0,
                    color: "#eee",
                    backgroundColor: "#666"
                }
            },
            selectorPosition: "auto",
            selectorItemGap: 7,
            selectorButtonGap: 10,
            tooltip: {
                show: !1
            }
        }
    });
    pa("legendToggleSelect", "legendselectchanged", y(Hl, "toggleSelected")), pa("legendAllSelect", "legendselectall", y(Hl, "allSelect")), 
    pa("legendInverseSelect", "legendinverseselect", y(Hl, "inverseSelect")), pa("legendSelect", "legendselected", y(Hl, "select")), 
    pa("legendUnSelect", "legendunselected", y(Hl, "unSelect"));
    var ky = y, Py = f, Ly = jh, Oy = _a({
        type: "legend.plain",
        newlineDisabled: !1,
        init: function() {
            this.group.add(this._contentGroup = new Ly()), this._backgroundEl, this.group.add(this._selectorGroup = new Ly()), 
            this._isFirstRender = !0;
        },
        getContentGroup: function() {
            return this._contentGroup;
        },
        getSelectorGroup: function() {
            return this._selectorGroup;
        },
        render: function(t, e, n) {
            var i = this._isFirstRender;
            if (this._isFirstRender = !1, this.resetInner(), t.get("show", !0)) {
                var r = t.get("align"), o = t.get("orient");
                r && "auto" !== r || (r = "right" === t.get("left") && "vertical" === o ? "right" : "left");
                var a = t.get("selector", !0), l = t.get("selectorPosition", !0);
                !a || l && "auto" !== l || (l = "horizontal" === o ? "end" : "start"), this.renderInner(r, t, e, n, a, o, l);
                var u = t.getBoxLayoutParams(), h = {
                    width: n.getWidth(),
                    height: n.getHeight()
                }, c = t.get("padding"), d = Sr(u, h, c), f = this.layoutInner(t, r, d, i, a, l), p = Sr(s({
                    width: f.width,
                    height: f.height
                }, u), h, c);
                this.group.attr("position", [ p.x - f.x, p.y - f.y ]), this.group.add(this._backgroundEl = function(t, e) {
                    var n = Jf(e.get("padding")), i = e.getItemStyle([ "color", "opacity" ]);
                    return i.fill = e.get("backgroundColor"), t = new yf({
                        shape: {
                            x: t.x - n[3],
                            y: t.y - n[0],
                            width: t.width + n[1] + n[3],
                            height: t.height + n[0] + n[2],
                            r: e.get("borderRadius")
                        },
                        style: i,
                        silent: !0,
                        z2: -1
                    });
                }(f, t));
            }
        },
        resetInner: function() {
            this.getContentGroup().removeAll(), this._backgroundEl && this.group.remove(this._backgroundEl), 
            this.getSelectorGroup().removeAll();
        },
        renderInner: function(t, e, n, i, r, o, a) {
            var s = this.getContentGroup(), l = z(), u = e.get("selectedMode"), h = [];
            n.eachRawSeries(function(t) {
                !t.get("legendHoverLink") && h.push(t.id);
            }), Py(e.getData(), function(r, o) {
                var a = r.get("name");
                if (this.newlineDisabled || "" !== a && "\n" !== a) {
                    var c = n.getSeriesByName(a)[0];
                    if (!l.get(a)) {
                        if (c) {
                            var d = c.getData(), f = d.getVisual("color"), p = d.getVisual("borderColor");
                            "function" == typeof f && (f = f(c.getDataParams(0))), "function" == typeof p && (p = p(c.getDataParams(0)));
                            var g = d.getVisual("legendSymbol") || "roundRect", m = d.getVisual("symbol");
                            this._createItem(a, o, r, e, g, m, t, f, p, u).on("click", ky(Wl, a, null, i, h)).on("mouseover", ky(Xl, c.name, null, i, h)).on("mouseout", ky(Ul, c.name, null, i, h)), 
                            l.set(a, !0);
                        } else n.eachRawSeries(function(n) {
                            if (!l.get(a) && n.legendVisualProvider) {
                                var s = n.legendVisualProvider;
                                if (!s.containName(a)) return;
                                var c = s.indexOfName(a), d = s.getItemVisual(c, "color"), f = s.getItemVisual(c, "borderColor");
                                this._createItem(a, o, r, e, "roundRect", null, t, d, f, u).on("click", ky(Wl, null, a, i, h)).on("mouseover", ky(Xl, null, a, i, h)).on("mouseout", ky(Ul, null, a, i, h)), 
                                l.set(a, !0);
                            }
                        }, this);
                        Lu && (l.get(a) || console.warn(a + " series not exists. Legend data should be same with series name or data name."));
                    }
                } else s.add(new Ly({
                    newline: !0
                }));
            }, this), r && this._createSelector(r, e, i, o, a);
        },
        _createSelector: function(t, e, n) {
            var i = this.getSelectorGroup();
            Py(t, function(t) {
                !function(t) {
                    var r = t.type, o = new af({
                        style: {
                            x: 0,
                            y: 0,
                            align: "center",
                            verticalAlign: "middle"
                        },
                        onclick: function() {
                            n.dispatchAction({
                                type: "all" === r ? "legendAllSelect" : "legendInverseSelect"
                            });
                        }
                    });
                    i.add(o);
                    var a = e.getModel("selectorLabel"), s = e.getModel("emphasis.selectorLabel");
                    Bi(o.style, o.hoverStyle = {}, a, s, {
                        defaultText: t.title,
                        isRectText: !1
                    }), Pi(o);
                }(t);
            });
        },
        _createItem: function(t, e, n, i, r, o, s, l, u, h) {
            var c = i.get("itemWidth"), d = i.get("itemHeight"), f = i.get("inactiveColor"), p = i.get("inactiveBorderColor"), g = i.get("symbolKeepAspect"), m = i.getModel("itemStyle"), v = i.isSelected(t), y = new Ly(), x = n.getModel("textStyle"), _ = n.get("icon"), w = n.getModel("tooltip"), b = w.parentModel, S = _s(r = _ || r, 0, 0, c, d, v ? l : f, null == g || g);
            if (y.add(Gl(S, r, m, u, p, v)), !_ && o && (o !== r || "none" === o)) {
                var M = .8 * d;
                "none" === o && (o = "circle");
                var I = _s(o, (c - M) / 2, (d - M) / 2, M, M, v ? l : f, null == g || g);
                y.add(Gl(I, o, m, u, p, v));
            }
            var T = "left" === s ? c + 5 : -5, C = s, D = i.get("formatter"), A = t;
            "string" == typeof D && D ? A = D.replace("{name}", null != t ? t : "") : "function" == typeof D && (A = D(t)), 
            y.add(new af({
                style: Ni({}, x, {
                    text: A,
                    x: T,
                    y: d / 2,
                    textFill: v ? x.getTextColor() : f,
                    textAlign: C,
                    textVerticalAlign: "middle"
                })
            }));
            var k = new yf({
                shape: y.getBoundingRect(),
                invisible: !0,
                tooltip: w.get("show") ? a({
                    content: t,
                    formatter: b.get("formatter", !0) || function() {
                        return t;
                    },
                    formatterParams: {
                        componentType: "legend",
                        legendIndex: i.componentIndex,
                        name: t,
                        $vars: [ "name" ]
                    }
                }, w.option) : null
            });
            return y.add(k), y.eachChild(function(t) {
                t.silent = !0;
            }), k.silent = !h, this.getContentGroup().add(y), Pi(y), y.__legendDataIndex = e, 
            y;
        },
        layoutInner: function(t, e, n, i, r, o) {
            var a = this.getContentGroup(), s = this.getSelectorGroup();
            up(t.get("orient"), a, t.get("itemGap"), n.width, n.height);
            var l = a.getBoundingRect(), u = [ -l.x, -l.y ];
            if (r) {
                up("horizontal", s, t.get("selectorItemGap", !0));
                var h = s.getBoundingRect(), c = [ -h.x, -h.y ], d = t.get("selectorButtonGap", !0), f = t.getOrient().index, p = 0 === f ? "width" : "height", g = 0 === f ? "height" : "width", m = 0 === f ? "y" : "x";
                "end" === o ? c[f] += l[p] + d : u[f] += h[p] + d, c[1 - f] += l[g] / 2 - h[g] / 2, 
                s.attr("position", c), a.attr("position", u);
                var v = {
                    x: 0,
                    y: 0
                };
                return v[p] = l[p] + d + h[p], v[g] = Math.max(l[g], h[g]), v[m] = Math.min(0, h[m] + c[1 - f]), 
                v;
            }
            return a.attr("position", u), this.group.getBoundingRect();
        },
        remove: function() {
            this.getContentGroup().removeAll(), this._isFirstRender = !0;
        }
    });
    fa(Yg.PROCESSOR.SERIES_FILTER, function(t) {
        var e = t.findComponents({
            mainType: "legend"
        });
        e && e.length && t.filterSeries(function(t) {
            for (var n = 0; n < e.length; n++) if (!e[n].isSelected(t.name)) return !1;
            return !0;
        });
    }), dp.registerSubTypeDefaulter("legend", function() {
        return "plain";
    });
    var Ey = Ay.extend({
        type: "legend.scroll",
        setScrollDataIndex: function(t) {
            this.option.scrollDataIndex = t;
        },
        defaultOption: {
            scrollDataIndex: 0,
            pageButtonItemGap: 5,
            pageButtonGap: null,
            pageButtonPosition: "end",
            pageFormatter: "{current}/{total}",
            pageIcons: {
                horizontal: [ "M0,0L12,-10L12,10z", "M0,0L-12,-10L-12,10z" ],
                vertical: [ "M0,0L20,0L10,-20z", "M0,0L20,0L10,20z" ]
            },
            pageIconColor: "#2f4554",
            pageIconInactiveColor: "#aaa",
            pageIconSize: 15,
            pageTextStyle: {
                color: "#333"
            },
            animationDurationUpdate: 800
        },
        init: function(t, e, n, i) {
            var r = Ir(t);
            Ey.superCall(this, "init", t, e, n, i), Yl(this, t, r);
        },
        mergeOption: function(t, e) {
            Ey.superCall(this, "mergeOption", t, e), Yl(this, this.option, t);
        }
    }), By = jh, Ny = [ "width", "height" ], zy = [ "x", "y" ], Ry = Oy.extend({
        type: "legend.scroll",
        newlineDisabled: !0,
        init: function() {
            Ry.superCall(this, "init"), this._currentIndex = 0, this.group.add(this._containerGroup = new By()), 
            this._containerGroup.add(this.getContentGroup()), this.group.add(this._controllerGroup = new By()), 
            this._showController;
        },
        resetInner: function() {
            Ry.superCall(this, "resetInner"), this._controllerGroup.removeAll(), this._containerGroup.removeClipPath(), 
            this._containerGroup.__rectSize = null;
        },
        renderInner: function(t, e, n, i, r, o, a) {
            function s(t, n) {
                var r = t + "DataIndex", o = ji(e.get("pageIcons", !0)[e.getOrient().name][n], {
                    onclick: v(l._pageGo, l, r, e, i)
                }, {
                    x: -h[0] / 2,
                    y: -h[1] / 2,
                    width: h[0],
                    height: h[1]
                });
                o.name = t, u.add(o);
            }
            var l = this;
            Ry.superCall(this, "renderInner", t, e, n, i, r, o, a);
            var u = this._controllerGroup, h = e.get("pageIconSize", !0);
            x(h) || (h = [ h, h ]), s("pagePrev", 0);
            var c = e.getModel("pageTextStyle");
            u.add(new af({
                name: "pageText",
                style: {
                    textFill: c.getTextColor(),
                    font: c.getFont(),
                    textVerticalAlign: "middle",
                    textAlign: "center"
                },
                silent: !0
            })), s("pageNext", 1);
        },
        layoutInner: function(t, e, n, r, o, a) {
            var s = this.getSelectorGroup(), l = t.getOrient().index, u = Ny[l], h = zy[l], c = Ny[1 - l], d = zy[1 - l];
            o && up("horizontal", s, t.get("selectorItemGap", !0));
            var f = t.get("selectorButtonGap", !0), p = s.getBoundingRect(), g = [ -p.x, -p.y ], m = i(n);
            o && (m[u] = n[u] - p[u] - f);
            var v = this._layoutContentAndController(t, r, m, l, u, c, d);
            if (o) {
                if ("end" === a) g[l] += v[u] + f; else {
                    var y = p[u] + f;
                    g[l] -= y, v[h] -= y;
                }
                v[u] += p[u] + f, g[1 - l] += v[d] + v[c] / 2 - p[c] / 2, v[c] = Math.max(v[c], p[c]), 
                v[d] = Math.min(v[d], p[d] + g[1 - l]), s.attr("position", g);
            }
            return v;
        },
        _layoutContentAndController: function(t, e, n, i, r, o, a) {
            var s = this.getContentGroup(), l = this._containerGroup, u = this._controllerGroup;
            up(t.get("orient"), s, t.get("itemGap"), i ? n.width : null, i ? null : n.height), 
            up("horizontal", u, t.get("pageButtonItemGap", !0));
            var h = s.getBoundingRect(), c = u.getBoundingRect(), d = this._showController = h[r] > n[r], f = [ -h.x, -h.y ];
            e || (f[i] = s.position[i]);
            var p = [ 0, 0 ], g = [ -c.x, -c.y ], m = D(t.get("pageButtonGap", !0), t.get("itemGap", !0));
            d && ("end" === t.get("pageButtonPosition", !0) ? g[i] += n[r] - c[r] : p[i] += c[r] + m);
            g[1 - i] += h[o] / 2 - c[o] / 2, s.attr("position", f), l.attr("position", p), u.attr("position", g);
            var v = {
                x: 0,
                y: 0
            };
            if (v[r] = d ? n[r] : h[r], v[o] = Math.max(h[o], c[o]), v[a] = Math.min(0, c[a] + g[1 - i]), 
            l.__rectSize = n[r], d) {
                var y = {
                    x: 0,
                    y: 0
                };
                y[r] = Math.max(n[r] - c[r] - m, 0), y[o] = v[o], l.setClipPath(new yf({
                    shape: y
                })), l.__rectSize = y[r];
            } else u.eachChild(function(t) {
                t.attr({
                    invisible: !0,
                    silent: !0
                });
            });
            var x = this._getPageInfo(t);
            return null != x.pageIndex && Xi(s, {
                position: x.contentPosition
            }, !!d && t), this._updatePageInfoView(t, x), v;
        },
        _pageGo: function(t, e, n) {
            var i = this._getPageInfo(e)[t];
            null != i && n.dispatchAction({
                type: "legendScroll",
                scrollDataIndex: i,
                legendId: e.id
            });
        },
        _updatePageInfoView: function(t, e) {
            var n = this._controllerGroup;
            f([ "pagePrev", "pageNext" ], function(i) {
                var r = null != e[i + "DataIndex"], o = n.childOfName(i);
                o && (o.setStyle("fill", r ? t.get("pageIconColor", !0) : t.get("pageIconInactiveColor", !0)), 
                o.cursor = r ? "pointer" : "default");
            });
            var i = n.childOfName("pageText"), r = t.get("pageFormatter"), o = e.pageIndex, a = null != o ? o + 1 : 0, s = e.pageCount;
            i && r && i.setStyle("text", w(r) ? r.replace("{current}", a).replace("{total}", s) : r({
                current: a,
                total: s
            }));
        },
        _getPageInfo: function(t) {
            function e(t) {
                if (t) {
                    var e = t.getBoundingRect(), n = e[l] + t.position[a];
                    return {
                        s: n,
                        e: n + e[s],
                        i: t.__legendDataIndex
                    };
                }
            }
            function n(t, e) {
                return t.e >= e && t.s <= e + o;
            }
            var i = t.get("scrollDataIndex", !0), r = this.getContentGroup(), o = this._containerGroup.__rectSize, a = t.getOrient().index, s = Ny[a], l = zy[a], u = this._findTargetItemIndex(i), h = r.children(), c = h[u], d = h.length, f = d ? 1 : 0, p = {
                contentPosition: r.position.slice(),
                pageCount: f,
                pageIndex: f - 1,
                pagePrevDataIndex: null,
                pageNextDataIndex: null
            };
            if (!c) return p;
            var g = e(c);
            p.contentPosition[a] = -g.s;
            for (var m = u + 1, v = g, y = g, x = null; d >= m; ++m) (!(x = e(h[m])) && y.e > v.s + o || x && !n(x, v.s)) && ((v = y.i > v.i ? y : x) && (null == p.pageNextDataIndex && (p.pageNextDataIndex = v.i), 
            ++p.pageCount)), y = x;
            for (m = u - 1, v = g, y = g, x = null; m >= -1; --m) (x = e(h[m])) && n(y, x.s) || !(v.i < y.i) || (y = v, 
            null == p.pagePrevDataIndex && (p.pagePrevDataIndex = v.i), ++p.pageCount, ++p.pageIndex), 
            v = x;
            return p;
        },
        _findTargetItemIndex: function(t) {
            return this._showController ? (this.getContentGroup().eachChild(function(i, r) {
                var o = i.__legendDataIndex;
                null == n && null != o && (n = r), o === t && (e = r);
            }), null != e ? e : n) : 0;
            var e, n;
        }
    });
    pa("legendScroll", "legendscroll", function(t, e) {
        var n = t.scrollDataIndex;
        null != n && e.eachComponent({
            mainType: "legend",
            subType: "scroll",
            query: t
        }, function(t) {
            t.setScrollDataIndex(n);
        });
    });
    var Fy = function(t, e) {
        var n, i = [], r = t.seriesIndex;
        if (null == r || !(n = e.getSeriesByIndex(r))) return {
            point: []
        };
        var o = n.getData(), a = xn(o, t);
        if (null == a || 0 > a || x(a)) return {
            point: []
        };
        var s = o.getItemGraphicEl(a), l = n.coordinateSystem;
        if (n.getTooltipPosition) i = n.getTooltipPosition(a) || []; else if (l && l.dataToPoint) i = l.dataToPoint(o.getValues(p(l.dimensions, function(t) {
            return o.mapDimension(t);
        }), a, !0)) || []; else if (s) {
            var u = s.getBoundingRect().clone();
            u.applyTransform(s.transform), i = [ u.x + u.width / 2, u.y + u.height / 2 ];
        }
        return {
            point: i,
            el: s
        };
    }, Vy = f, Hy = y, Gy = _n(), Wy = (xa({
        type: "axisPointer",
        coordSysAxesInfo: null,
        defaultOption: {
            show: "auto",
            triggerOn: null,
            zlevel: 0,
            z: 50,
            type: "line",
            snap: !1,
            triggerTooltip: !0,
            value: null,
            status: null,
            link: [],
            animation: null,
            animationDurationUpdate: 200,
            lineStyle: {
                color: "#aaa",
                width: 1,
                type: "solid"
            },
            shadowStyle: {
                color: "rgba(150,150,150,0.3)"
            },
            label: {
                show: !0,
                formatter: null,
                precision: "auto",
                margin: 3,
                color: "#fff",
                padding: [ 5, 7, 5, 7 ],
                backgroundColor: "auto",
                borderColor: null,
                borderWidth: 0,
                shadowBlur: 3,
                shadowColor: "#aaa"
            },
            handle: {
                show: !1,
                icon: "M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4h1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7v-1.2h6.6z M13.3,22H6.7v-1.2h6.6z M13.3,19.6H6.7v-1.2h6.6z",
                size: 45,
                margin: 50,
                color: "#333",
                shadowBlur: 3,
                shadowColor: "#aaa",
                shadowOffsetX: 0,
                shadowOffsetY: 2,
                throttle: 40
            }
        }
    }), _n()), Xy = f, Uy = _a({
        type: "axisPointer",
        render: function(t, e, n) {
            var i = e.getComponent("tooltip"), r = t.get("triggerOn") || i && i.get("triggerOn") || "mousemove|click";
            Jl("axisPointer", n, function(t, e, n) {
                "none" !== r && ("leave" === t || r.indexOf(t) >= 0) && n({
                    type: "updateAxisPointer",
                    currTrigger: t,
                    x: e && e.offsetX,
                    y: e && e.offsetY
                });
            });
        },
        remove: function(t, e) {
            nu(e.getZr(), "axisPointer"), Uy.superApply(this._model, "remove", arguments);
        },
        dispose: function(t, e) {
            nu("axisPointer", e), Uy.superApply(this._model, "dispose", arguments);
        }
    }), Yy = _n(), qy = i, jy = v;
    iu.prototype = {
        _group: null,
        _lastGraphicKey: null,
        _handle: null,
        _dragging: !1,
        _lastValue: null,
        _lastStatus: null,
        _payloadInfo: null,
        animationThreshold: 15,
        render: function(t, e, n, i) {
            var r = e.get("value"), o = e.get("status");
            if (this._axisModel = t, this._axisPointerModel = e, this._api = n, i || this._lastValue !== r || this._lastStatus !== o) {
                this._lastValue = r, this._lastStatus = o;
                var a = this._group, s = this._handle;
                if (!o || "hide" === o) return a && a.hide(), void (s && s.hide());
                a && a.show(), s && s.show();
                var l = {};
                this.makeElOption(l, r, t, e, n);
                var u = l.graphicKey;
                u !== this._lastGraphicKey && this.clear(n), this._lastGraphicKey = u;
                var h = this._moveAnimation = this.determineAnimation(t, e);
                if (a) {
                    var c = y(ru, e, h);
                    this.updatePointerEl(a, l, c, e), this.updateLabelEl(a, l, c, e);
                } else a = this._group = new jh(), this.createPointerEl(a, l, t, e), this.createLabelEl(a, l, t, e), 
                n.getZr().add(a);
                su(a, e, !0), this._renderHandle(r);
            }
        },
        remove: function(t) {
            this.clear(t);
        },
        dispose: function(t) {
            this.clear(t);
        },
        determineAnimation: function(t, e) {
            var n = e.get("animation"), i = t.axis, r = "category" === i.type, o = e.get("snap");
            if (!o && !r) return !1;
            if ("auto" === n || null == n) {
                var a = this.animationThreshold;
                if (r && i.getBandWidth() > a) return !0;
                if (o) {
                    var s = sl(t).seriesDataCount, l = i.getExtent();
                    return Math.abs(l[0] - l[1]) / s > a;
                }
                return !1;
            }
            return !0 === n;
        },
        makeElOption: function() {},
        createPointerEl: function(t, e) {
            var n = e.pointer;
            if (n) {
                var i = Yy(t).pointerEl = new Gf[n.type](qy(e.pointer));
                t.add(i);
            }
        },
        createLabelEl: function(t, e, n, i) {
            if (e.label) {
                var r = Yy(t).labelEl = new yf(qy(e.label));
                t.add(r), ou(r, i);
            }
        },
        updatePointerEl: function(t, e, n) {
            var i = Yy(t).pointerEl;
            i && e.pointer && (i.setStyle(e.pointer.style), n(i, {
                shape: e.pointer.shape
            }));
        },
        updateLabelEl: function(t, e, n, i) {
            var r = Yy(t).labelEl;
            r && (r.setStyle(e.label.style), n(r, {
                shape: e.label.shape,
                position: e.label.position
            }), ou(r, i));
        },
        _renderHandle: function(t) {
            if (!this._dragging && this.updateHandleTransform) {
                var e, n = this._axisPointerModel, i = this._api.getZr(), r = this._handle, o = n.getModel("handle"), a = n.get("status");
                if (!o.get("show") || !a || "hide" === a) return r && i.remove(r), void (this._handle = null);
                this._handle || (e = !0, r = this._handle = ji(o.get("icon"), {
                    cursor: "move",
                    draggable: !0,
                    onmousemove: function(t) {
                        hh(t.event);
                    },
                    onmousedown: jy(this._onHandleDragMove, this, 0, 0),
                    drift: jy(this._onHandleDragMove, this),
                    ondragend: jy(this._onHandleDragEnd, this)
                }), i.add(r)), su(r, n, !1);
                r.setStyle(o.getItemStyle(null, [ "color", "borderColor", "borderWidth", "opacity", "shadowColor", "shadowBlur", "shadowOffsetX", "shadowOffsetY" ]));
                var s = o.get("size");
                x(s) || (s = [ s, s ]), r.attr("scale", [ s[0] / 2, s[1] / 2 ]), function(t, e, n, i) {
                    var r = t[e];
                    if (r) {
                        var o = r[ag] || r, a = r[lg];
                        if (r[sg] !== n || a !== i) {
                            if (null == n || !i) return t[e] = o;
                            (r = t[e] = Mo(o, n, "debounce" === i))[ag] = o, r[lg] = i, r[sg] = n;
                        }
                    }
                }(this, "_doDispatchAxisPointer", o.get("throttle") || 0, "fixRate"), this._moveHandleToValue(t, e);
            }
        },
        _moveHandleToValue: function(t, e) {
            ru(this._axisPointerModel, !e && this._moveAnimation, this._handle, au(this.getHandleTransform(t, this._axisModel, this._axisPointerModel)));
        },
        _onHandleDragMove: function(t, e) {
            var n = this._handle;
            if (n) {
                this._dragging = !0;
                var i = this.updateHandleTransform(au(n), [ t, e ], this._axisModel, this._axisPointerModel);
                this._payloadInfo = i, n.stopAnimation(), n.attr(au(i)), Yy(n).lastProp = null, 
                this._doDispatchAxisPointer();
            }
        },
        _doDispatchAxisPointer: function() {
            if (this._handle) {
                var t = this._payloadInfo, e = this._axisModel;
                this._api.dispatchAction({
                    type: "updateAxisPointer",
                    x: t.cursorPoint[0],
                    y: t.cursorPoint[1],
                    tooltipOption: t.tooltipOption,
                    axesInfo: [ {
                        axisDim: e.axis.dim,
                        axisIndex: e.componentIndex
                    } ]
                });
            }
        },
        _onHandleDragEnd: function() {
            if (this._dragging = !1, this._handle) {
                var t = this._axisPointerModel.get("value");
                this._moveHandleToValue(t), this._api.dispatchAction({
                    type: "hideTip"
                });
            }
        },
        getHandleTransform: null,
        updateHandleTransform: null,
        clear: function(t) {
            this._lastValue = null, this._lastStatus = null;
            var e = t.getZr(), n = this._group, i = this._handle;
            e && n && (this._lastGraphicKey = null, n && e.remove(n), i && e.remove(i), this._group = null, 
            this._handle = null, this._payloadInfo = null);
        },
        doClear: function() {},
        buildLabel: function(t, e, n) {
            return {
                x: t[n = n || 0],
                y: t[1 - n],
                width: e[n],
                height: e[1 - n]
            };
        }
    }, iu.prototype.constructor = iu, Tn(iu);
    var Zy = iu.extend({
        makeElOption: function(t, e, n, i, r) {
            var o = n.axis, a = o.grid, s = i.get("type"), l = du(a, o).getOtherAxis(o).getGlobalExtent(), u = o.toGlobalCoord(o.dataToCoord(e, !0));
            if (s && "none" !== s) {
                var h = function(t) {
                    var e, n = t.get("type"), i = t.getModel(n + "Style");
                    return "line" === n ? (e = i.getLineStyle()).fill = null : "shadow" === n && ((e = i.getAreaStyle()).stroke = null), 
                    e;
                }(i), c = Ky[s](o, u, l);
                c.style = h, t.graphicKey = c.type, t.pointer = c;
            }
            !function(t, e, n, i, r, o) {
                var a = Wv.innerTextLayout(n.rotation, 0, n.labelDirection);
                n.labelMargin = r.get("label.margin"), lu(e, i, r, o, {
                    position: hu(i.axis, t, n),
                    align: a.textAlign,
                    verticalAlign: a.textVerticalAlign
                });
            }(e, t, dl(a.model, n), n, i, r);
        },
        getHandleTransform: function(t, e, n) {
            var i = dl(e.axis.grid.model, e, {
                labelInside: !1
            });
            return i.labelMargin = n.get("handle.margin"), {
                position: hu(e.axis, t, i),
                rotation: i.rotation + (i.labelDirection < 0 ? Math.PI : 0)
            };
        },
        updateHandleTransform: function(t, e, n) {
            var i = n.axis, r = i.grid, o = i.getGlobalExtent(!0), a = du(r, i).getOtherAxis(i).getGlobalExtent(), s = "x" === i.dim ? 0 : 1, l = t.position;
            l[s] += e[s], l[s] = Math.min(o[1], l[s]), l[s] = Math.max(o[0], l[s]);
            var u = (a[1] + a[0]) / 2, h = [ u, u ];
            h[s] = l[s];
            return {
                position: l,
                rotation: t.rotation,
                cursorPoint: h,
                tooltipOption: [ {
                    verticalAlign: "middle"
                }, {
                    align: "center"
                } ][s]
            };
        }
    }), Ky = {
        line: function(t, e, n) {
            return {
                type: "Line",
                subPixelOptimize: !0,
                shape: function(t, e, n) {
                    return {
                        x1: t[n = n || 0],
                        y1: t[1 - n],
                        x2: e[n],
                        y2: e[1 - n]
                    };
                }([ e, n[0] ], [ e, n[1] ], fu(t))
            };
        },
        shadow: function(t, e, n) {
            var i = Math.max(1, t.getBandWidth()), r = n[1] - n[0];
            return {
                type: "Rect",
                shape: cu([ e - i / 2, n[0] ], [ i, r ], fu(t))
            };
        }
    };
    Kv.registerAxisPointerClass("CartesianAxisPointer", Zy), da(function(t) {
        if (t) {
            (!t.axisPointer || 0 === t.axisPointer.length) && (t.axisPointer = {});
            var e = t.axisPointer.link;
            e && !x(e) && (t.axisPointer.link = [ e ]);
        }
    }), fa(Yg.PROCESSOR.STATISTIC, function(t, e) {
        t.getComponent("axisPointer").coordSysAxesInfo = il(t, e);
    }), pa({
        type: "updateAxisPointer",
        event: "updateAxisPointer",
        update: ":updateAxisPointer"
    }, function(t, e, n) {
        var i = t.currTrigger, r = [ t.x, t.y ], o = t, a = t.dispatchAction || v(n.dispatchAction, n), s = e.getComponent("axisPointer").coordSysAxesInfo;
        if (s) {
            Ql(r) && (r = Fy({
                seriesIndex: o.seriesIndex,
                dataIndex: o.dataIndex
            }, e).point);
            var l = Ql(r), u = o.axesInfo, h = s.axesInfo, c = "leave" === i || Ql(r), d = {}, f = {}, p = {
                list: [],
                map: {}
            }, g = {
                showPointer: Hy(jl, f),
                showTooltip: Hy(Zl, p)
            };
            Vy(s.coordSysMap, function(t, e) {
                var n = l || t.containPoint(r);
                Vy(s.coordSysAxesInfo[e], function(t) {
                    var e = t.axis, i = function(t, e) {
                        for (var n = 0; n < (t || []).length; n++) {
                            var i = t[n];
                            if (e.axis.dim === i.axisDim && e.axis.model.componentIndex === i.axisIndex) return i;
                        }
                    }(u, t);
                    if (!c && n && (!u || i)) {
                        var o = i && i.value;
                        null != o || l || (o = e.pointToData(r)), null != o && ql(t, o, g, !1, d);
                    }
                });
            });
            var m = {};
            return Vy(h, function(t, e) {
                var n = t.linkGroup;
                n && !f[e] && Vy(n.axesInfo, function(e, i) {
                    var r = f[i];
                    if (e !== t && r) {
                        var o = r.value;
                        n.mapper && (o = t.axis.scale.parse(n.mapper(o, $l(e), $l(t)))), m[t.key] = o;
                    }
                });
            }), Vy(m, function(t, e) {
                ql(h[e], t, g, !0, d);
            }), function(t, e, n) {
                var i = n.axesInfo = [];
                Vy(e, function(e, n) {
                    var r = e.axisPointerModel.option, o = t[n];
                    o ? (!e.useHandle && (r.status = "show"), r.value = o.value, r.seriesDataIndices = (o.payloadBatch || []).slice()) : !e.useHandle && (r.status = "hide"), 
                    "show" === r.status && i.push({
                        axisDim: e.axis.dim,
                        axisIndex: e.axis.model.componentIndex,
                        value: r.value
                    });
                });
            }(f, h, d), function(t, e, n, i) {
                if (!Ql(e) && t.list.length) {
                    var r = ((t.list[0].dataByAxis[0] || {}).seriesDataIndices || [])[0] || {};
                    i({
                        type: "showTip",
                        escapeConnect: !0,
                        x: e[0],
                        y: e[1],
                        tooltipOption: n.tooltipOption,
                        position: n.position,
                        dataIndexInside: r.dataIndexInside,
                        dataIndex: r.dataIndex,
                        seriesIndex: r.seriesIndex,
                        dataByCoordSys: t.list
                    });
                } else i({
                    type: "hideTip"
                });
            }(p, r, t, a), Kl(h, 0, n), d;
        }
    }), xa({
        type: "tooltip",
        dependencies: [ "axisPointer" ],
        defaultOption: {
            zlevel: 0,
            z: 60,
            show: !0,
            showContent: !0,
            trigger: "item",
            triggerOn: "mousemove|click",
            alwaysShowContent: !1,
            displayMode: "single",
            renderMode: "auto",
            confine: !1,
            showDelay: 0,
            hideDelay: 100,
            transitionDuration: .4,
            enterable: !1,
            backgroundColor: "rgba(50,50,50,0.7)",
            borderColor: "#333",
            borderRadius: 4,
            borderWidth: 0,
            padding: 5,
            extraCssText: "",
            axisPointer: {
                type: "line",
                axis: "auto",
                animation: "auto",
                animationDurationUpdate: 200,
                animationEasingUpdate: "exponentialOut",
                crossStyle: {
                    color: "#999",
                    width: 1,
                    type: "dashed",
                    textStyle: {}
                }
            },
            textStyle: {
                color: "#fff",
                fontSize: 14
            }
        }
    });
    var $y = f, Qy = gr, Jy = [ "", "-webkit-", "-moz-", "-o-" ];
    mu.prototype = {
        constructor: mu,
        _enterable: !0,
        update: function(t) {
            var e = this._container, n = e.currentStyle || document.defaultView.getComputedStyle(e), i = e.style;
            "absolute" !== i.position && "absolute" !== n.position && (i.position = "relative"), 
            t.get("alwaysShowContent") && this._moveTooltipIfResized();
        },
        _moveTooltipIfResized: function() {
            var t = this._styleCoord[2], e = this._styleCoord[3], n = t * this._zr.getWidth(), i = e * this._zr.getHeight();
            this.moveTo(n, i);
        },
        show: function(t) {
            clearTimeout(this._hideTimeout);
            var e = this.el, n = this._styleCoord;
            e.style.cssText = "position:absolute;display:block;border-style:solid;white-space:nowrap;z-index:9999999;" + pu(t) + ";left:" + n[0] + "px;top:" + n[1] + "px;" + (t.get("extraCssText") || ""), 
            e.style.display = e.innerHTML ? "block" : "none", e.style.pointerEvents = this._enterable ? "auto" : "none", 
            this._show = !0;
        },
        setContent: function(t) {
            this.el.innerHTML = null == t ? "" : t;
        },
        setEnterable: function(t) {
            this._enterable = t;
        },
        getSize: function() {
            var t = this.el;
            return [ t.clientWidth, t.clientHeight ];
        },
        moveTo: function(t, e) {
            var n = this._styleCoord;
            gu(n, this._zr, this._appendToBody, t, e);
            var i = this.el.style;
            i.left = n[0] + "px", i.top = n[1] + "px";
        },
        hide: function() {
            this.el.style.display = "none", this._show = !1;
        },
        hideLater: function(t) {
            !this._show || this._inContent && this._enterable || (t ? (this._hideDelay = t, 
            this._show = !1, this._hideTimeout = setTimeout(v(this.hide, this), t)) : this.hide());
        },
        isShow: function() {
            return this._show;
        },
        dispose: function() {
            this.el.parentNode.removeChild(this.el);
        },
        getOuterSize: function() {
            var t = this.el.clientWidth, e = this.el.clientHeight;
            if (document.defaultView && document.defaultView.getComputedStyle) {
                var n = document.defaultView.getComputedStyle(this.el);
                n && (t += parseInt(n.borderLeftWidth, 10) + parseInt(n.borderRightWidth, 10), e += parseInt(n.borderTopWidth, 10) + parseInt(n.borderBottomWidth, 10));
            }
            return {
                width: t,
                height: e
            };
        }
    }, yu.prototype = {
        constructor: yu,
        _enterable: !0,
        update: function(t) {
            t.get("alwaysShowContent") && this._moveTooltipIfResized();
        },
        _moveTooltipIfResized: function() {
            var t = this._styleCoord[2], e = this._styleCoord[3], n = t * this._zr.getWidth(), i = e * this._zr.getHeight();
            this.moveTo(n, i);
        },
        show: function() {
            this._hideTimeout && clearTimeout(this._hideTimeout), this.el.attr("show", !0), 
            this._show = !0;
        },
        setContent: function(t, e, n) {
            this.el && this._zr.remove(this.el);
            for (var i = {}, r = t, o = "{marker", a = r.indexOf(o); a >= 0; ) {
                var s = r.indexOf("|}"), l = r.substr(a + o.length, s - a - o.length);
                i["marker" + l] = l.indexOf("sub") > -1 ? {
                    textWidth: 4,
                    textHeight: 4,
                    textBorderRadius: 2,
                    textBackgroundColor: e[l],
                    textOffset: [ 3, 0 ]
                } : {
                    textWidth: 10,
                    textHeight: 10,
                    textBorderRadius: 5,
                    textBackgroundColor: e[l]
                }, a = (r = r.substr(s + 1)).indexOf("{marker");
            }
            var u = n.getModel("textStyle"), h = u.get("fontSize"), c = n.get("textLineHeight");
            null == c && (c = Math.round(3 * h / 2)), this.el = new af({
                style: Ni({}, u, {
                    rich: i,
                    text: t,
                    textBackgroundColor: n.get("backgroundColor"),
                    textBorderRadius: n.get("borderRadius"),
                    textFill: n.get("textStyle.color"),
                    textPadding: n.get("padding"),
                    textLineHeight: c
                }),
                z: n.get("z")
            }), this._zr.add(this.el);
            var d = this;
            this.el.on("mouseover", function() {
                d._enterable && (clearTimeout(d._hideTimeout), d._show = !0), d._inContent = !0;
            }), this.el.on("mouseout", function() {
                d._enterable && d._show && d.hideLater(d._hideDelay), d._inContent = !1;
            });
        },
        setEnterable: function(t) {
            this._enterable = t;
        },
        getSize: function() {
            var t = this.el.getBoundingRect();
            return [ t.width, t.height ];
        },
        moveTo: function(t, e) {
            if (this.el) {
                var n = this._styleCoord;
                vu(n, this._zr, t, e), this.el.attr("position", [ n[0], n[1] ]);
            }
        },
        hide: function() {
            this.el && this.el.hide(), this._show = !1;
        },
        hideLater: function(t) {
            !this._show || this._inContent && this._enterable || (t ? (this._hideDelay = t, 
            this._show = !1, this._hideTimeout = setTimeout(v(this.hide, this), t)) : this.hide());
        },
        isShow: function() {
            return this._show;
        },
        dispose: function() {
            clearTimeout(this._hideTimeout), this.el && this._zr.remove(this.el);
        },
        getOuterSize: function() {
            var t = this.getSize();
            return {
                width: t[0],
                height: t[1]
            };
        }
    };
    var tx = v, ex = f, nx = nr, ix = new yf({
        shape: {
            x: -1,
            y: -1,
            width: 2,
            height: 2
        }
    });
    _a({
        type: "tooltip",
        init: function(t, e) {
            if (!Bu.node) {
                var n, i = t.getComponent("tooltip"), r = i.get("renderMode");
                this._renderMode = Mn(r), "html" === this._renderMode ? (n = new mu(e.getDom(), e, {
                    appendToBody: i.get("appendToBody", !0)
                }), this._newLine = "<br/>") : (n = new yu(e), this._newLine = "\n"), this._tooltipContent = n;
            }
        },
        render: function(t, e, n) {
            if (!Bu.node) {
                this.group.removeAll(), this._tooltipModel = t, this._ecModel = e, this._api = n, 
                this._lastDataByCoordSys = null, this._alwaysShowContent = t.get("alwaysShowContent");
                var i = this._tooltipContent;
                i.update(t), i.setEnterable(t.get("enterable")), this._initGlobalListener(), this._keepShow();
            }
        },
        _initGlobalListener: function() {
            var t = this._tooltipModel.get("triggerOn");
            Jl("itemTooltip", this._api, tx(function(e, n, i) {
                "none" !== t && (t.indexOf(e) >= 0 ? this._tryShow(n, i) : "leave" === e && this._hide(i));
            }, this));
        },
        _keepShow: function() {
            var t = this._tooltipModel, e = this._ecModel, n = this._api;
            if (null != this._lastX && null != this._lastY && "none" !== t.get("triggerOn")) {
                var i = this;
                clearTimeout(this._refreshUpdateTimeout), this._refreshUpdateTimeout = setTimeout(function() {
                    !n.isDisposed() && i.manuallyShowTip(t, e, n, {
                        x: i._lastX,
                        y: i._lastY
                    });
                });
            }
        },
        manuallyShowTip: function(t, e, n, i) {
            if (i.from !== this.uid && !Bu.node) {
                var r = _u(i, n);
                this._ticket = "";
                var o = i.dataByCoordSys;
                if (i.tooltip && null != i.x && null != i.y) {
                    var a = ix;
                    a.position = [ i.x, i.y ], a.update(), a.tooltip = i.tooltip, this._tryShow({
                        offsetX: i.x,
                        offsetY: i.y,
                        target: a
                    }, r);
                } else if (o) this._tryShow({
                    offsetX: i.x,
                    offsetY: i.y,
                    position: i.position,
                    dataByCoordSys: i.dataByCoordSys,
                    tooltipOption: i.tooltipOption
                }, r); else if (null != i.seriesIndex) {
                    if (this._manuallyAxisShowTip(t, e, n, i)) return;
                    var s = Fy(i, e), l = s.point[0], u = s.point[1];
                    null != l && null != u && this._tryShow({
                        offsetX: l,
                        offsetY: u,
                        position: i.position,
                        target: s.el
                    }, r);
                } else null != i.x && null != i.y && (n.dispatchAction({
                    type: "updateAxisPointer",
                    x: i.x,
                    y: i.y
                }), this._tryShow({
                    offsetX: i.x,
                    offsetY: i.y,
                    position: i.position,
                    target: n.getZr().findHover(i.x, i.y).target
                }, r));
            }
        },
        manuallyHideTip: function(t, e, n, i) {
            var r = this._tooltipContent;
            !this._alwaysShowContent && this._tooltipModel && r.hideLater(this._tooltipModel.get("hideDelay")), 
            this._lastX = this._lastY = null, i.from !== this.uid && this._hide(_u(i, n));
        },
        _manuallyAxisShowTip: function(t, e, n, i) {
            var r = i.seriesIndex, o = i.dataIndex, a = e.getComponent("axisPointer").coordSysAxesInfo;
            if (null != r && null != o && null != a) {
                var s = e.getSeriesByIndex(r);
                if (s) if ("axis" === (t = xu([ s.getData().getItemModel(o), s, (s.coordinateSystem || {}).model, t ])).get("trigger")) return n.dispatchAction({
                    type: "updateAxisPointer",
                    seriesIndex: r,
                    dataIndex: o,
                    position: i.position
                }), !0;
            }
        },
        _tryShow: function(t, e) {
            var n = t.target;
            if (this._tooltipModel) {
                this._lastX = t.offsetX, this._lastY = t.offsetY;
                var i = t.dataByCoordSys;
                i && i.length ? this._showAxisTooltip(i, t) : n && null != n.dataIndex ? (this._lastDataByCoordSys = null, 
                this._showSeriesItemTooltip(t, n, e)) : n && n.tooltip ? (this._lastDataByCoordSys = null, 
                this._showComponentItemTooltip(t, n, e)) : (this._lastDataByCoordSys = null, this._hide(e));
            }
        },
        _showOrMove: function(t, e) {
            var n = t.get("showDelay");
            e = v(e, this), clearTimeout(this._showTimout), n > 0 ? this._showTimout = setTimeout(e, n) : e();
        },
        _showAxisTooltip: function(t, e) {
            var n = this._ecModel, i = this._tooltipModel, o = [ e.offsetX, e.offsetY ], a = [], s = [], l = xu([ e.tooltipOption, i ]), u = this._renderMode, h = this._newLine, c = {};
            ex(t, function(t) {
                ex(t.dataByAxis, function(t) {
                    var e = n.getComponent(t.axisDim + "Axis", t.axisIndex), i = t.value, o = [];
                    if (e && null != i) {
                        var l = uu(i, e.axis, n, t.seriesDataIndices, t.valueLabelOpt);
                        f(t.seriesDataIndices, function(a) {
                            var h = n.getSeriesByIndex(a.seriesIndex), d = a.dataIndexInside, f = h && h.getDataParams(d);
                            if (f.axisDim = t.axisDim, f.axisIndex = t.axisIndex, f.axisType = t.axisType, f.axisId = t.axisId, 
                            f.axisValue = gs(e.axis, i), f.axisValueLabel = l, f) {
                                s.push(f);
                                var p, g = h.formatTooltip(d, !0, null, u);
                                if (b(g)) {
                                    p = g.html;
                                    var m = g.markers;
                                    r(c, m);
                                } else p = g;
                                o.push(p);
                            }
                        });
                        var d = l;
                        a.push("html" !== u ? o.join(h) : (d ? mr(d) + h : "") + o.join(h));
                    }
                });
            }, this), a.reverse(), a = a.join(this._newLine + this._newLine);
            var d = e.position;
            this._showOrMove(l, function() {
                this._updateContentNotChangedOnAxis(t) ? this._updatePosition(l, d, o[0], o[1], this._tooltipContent, s) : this._showTooltipContent(l, a, s, Math.random(), o[0], o[1], d, void 0, c);
            });
        },
        _showSeriesItemTooltip: function(t, e, n) {
            var i = this._ecModel, r = e.seriesIndex, o = i.getSeriesByIndex(r), a = e.dataModel || o, s = e.dataIndex, l = e.dataType, u = a.getData(l), h = xu([ u.getItemModel(s), a, o && (o.coordinateSystem || {}).model, this._tooltipModel ]), c = h.get("trigger");
            if (null == c || "item" === c) {
                var d, f, p = a.getDataParams(s, l), g = a.formatTooltip(s, !1, l, this._renderMode);
                b(g) ? (d = g.html, f = g.markers) : (d = g, f = null);
                var m = "item_" + a.name + "_" + s;
                this._showOrMove(h, function() {
                    this._showTooltipContent(h, d, p, m, t.offsetX, t.offsetY, t.position, t.target, f);
                }), n({
                    type: "showTip",
                    dataIndexInside: s,
                    dataIndex: u.getRawIndex(s),
                    seriesIndex: r,
                    from: this.uid
                });
            }
        },
        _showComponentItemTooltip: function(t, e, n) {
            var i = e.tooltip;
            if ("string" == typeof i) {
                i = {
                    content: i,
                    formatter: i
                };
            }
            var r = new $i(i, this._tooltipModel, this._ecModel), o = r.get("content"), a = Math.random();
            this._showOrMove(r, function() {
                this._showTooltipContent(r, o, r.get("formatterParams") || {}, a, t.offsetX, t.offsetY, t.position, e);
            }), n({
                type: "showTip",
                from: this.uid
            });
        },
        _showTooltipContent: function(t, e, n, i, r, o, a, s, l) {
            if (this._ticket = "", t.get("showContent") && t.get("show")) {
                var u = this._tooltipContent, h = t.get("formatter");
                a = a || t.get("position");
                var c = e;
                if (h && "string" == typeof h) c = vr(h, n, !0); else if ("function" == typeof h) {
                    var d = tx(function(e, i) {
                        e === this._ticket && (u.setContent(i, l, t), this._updatePosition(t, a, r, o, u, n, s));
                    }, this);
                    this._ticket = i, c = h(n, i, d);
                }
                u.setContent(c, l, t), u.show(t), this._updatePosition(t, a, r, o, u, n, s);
            }
        },
        _updatePosition: function(t, e, n, i, r, o, a) {
            var s = this._api.getWidth(), l = this._api.getHeight();
            e = e || t.get("position");
            var u = r.getSize(), h = t.get("align"), c = t.get("verticalAlign"), d = a && a.getBoundingRect().clone();
            if (a && d.applyTransform(a.transform), "function" == typeof e && (e = e([ n, i ], o, r.el, d, {
                viewSize: [ s, l ],
                contentSize: u.slice()
            })), x(e)) n = nx(e[0], s), i = nx(e[1], l); else if (b(e)) {
                e.width = u[0], e.height = u[1];
                var f = Sr(e, {
                    width: s,
                    height: l
                });
                n = f.x, i = f.y, h = null, c = null;
            } else if ("string" == typeof e && a) {
                n = (p = function(t, e, n) {
                    var i = n[0], r = n[1], o = 0, a = 0, s = e.width, l = e.height;
                    switch (t) {
                      case "inside":
                        o = e.x + s / 2 - i / 2, a = e.y + l / 2 - r / 2;
                        break;

                      case "top":
                        o = e.x + s / 2 - i / 2, a = e.y - r - 5;
                        break;

                      case "bottom":
                        o = e.x + s / 2 - i / 2, a = e.y + l + 5;
                        break;

                      case "left":
                        o = e.x - i - 5, a = e.y + l / 2 - r / 2;
                        break;

                      case "right":
                        o = e.x + s + 5, a = e.y + l / 2 - r / 2;
                    }
                    return [ o, a ];
                }(e, d, u))[0], i = p[1];
            } else {
                var p = function(t, e, n, i, r, o, a) {
                    var s = n.getOuterSize(), l = s.width, u = s.height;
                    return null != o && (t + l + o > i ? t -= l + o : t += o), null != a && (e + u + a > r ? e -= u + a : e += a), 
                    [ t, e ];
                }(n, i, r, s, l, h ? null : 20, c ? null : 20);
                n = p[0], i = p[1];
            }
            if (h && (n -= wu(h) ? u[0] / 2 : "right" === h ? u[0] : 0), c && (i -= wu(c) ? u[1] / 2 : "bottom" === c ? u[1] : 0), 
            t.get("confine")) {
                p = function(t, e, n, i, r) {
                    var o = n.getOuterSize(), a = o.width, s = o.height;
                    return t = Math.min(t + a, i) - a, e = Math.min(e + s, r) - s, [ t = Math.max(t, 0), e = Math.max(e, 0) ];
                }(n, i, r, s, l);
                n = p[0], i = p[1];
            }
            r.moveTo(n, i);
        },
        _updateContentNotChangedOnAxis: function(t) {
            var e = this._lastDataByCoordSys, n = !!e && e.length === t.length;
            return n && ex(e, function(e, i) {
                var r = e.dataByAxis || {}, o = (t[i] || {}).dataByAxis || [];
                (n &= r.length === o.length) && ex(r, function(t, e) {
                    var i = o[e] || {}, r = t.seriesDataIndices || [], a = i.seriesDataIndices || [];
                    (n &= t.value === i.value && t.axisType === i.axisType && t.axisId === i.axisId && r.length === a.length) && ex(r, function(t, e) {
                        var i = a[e];
                        n &= t.seriesIndex === i.seriesIndex && t.dataIndex === i.dataIndex;
                    });
                });
            }), this._lastDataByCoordSys = t, !!n;
        },
        _hide: function(t) {
            this._lastDataByCoordSys = null, t({
                type: "hideTip",
                from: this.uid
            });
        },
        dispose: function(t, e) {
            Bu.node || (this._tooltipContent.dispose(), nu("itemTooltip", e));
        }
    }), pa({
        type: "showTip",
        event: "showTip",
        update: "tooltip:manuallyShowTip"
    }, function() {}), pa({
        type: "hideTip",
        event: "hideTip",
        update: "tooltip:manuallyHideTip"
    }, function() {});
    var rx = pr, ox = mr, ax = xa({
        type: "marker",
        dependencies: [ "series", "grid", "polar", "geo" ],
        init: function(t, e, n) {
            if (Lu && "marker" === this.type) throw new Error("Marker component is abstract component. Use markLine, markPoint, markArea instead.");
            this.mergeDefaultAndTheme(t, n), this._mergeOption(t, n, !1, !0);
        },
        isAnimationEnabled: function() {
            if (Bu.node) return !1;
            var t = this.__hostSeries;
            return this.getShallow("animation") && t && t.isAnimationEnabled();
        },
        mergeOption: function(t, e) {
            this._mergeOption(t, e, !1, !1);
        },
        _mergeOption: function(t, e, n, i) {
            var r = this.constructor, o = this.mainType + "Model";
            n || e.eachSeries(function(t) {
                var n = t.get(this.mainType, !0), s = t[o];
                return n && n.data ? (s ? s._mergeOption(n, e, !0) : (i && bu(n), f(n.data, function(t) {
                    t instanceof Array ? (bu(t[0]), bu(t[1])) : bu(t);
                }), a(s = new r(n, this, e), {
                    mainType: this.mainType,
                    seriesIndex: t.seriesIndex,
                    name: t.name,
                    createdBySelf: !0
                }), s.__hostSeries = t), void (t[o] = s)) : void (t[o] = null);
            }, this);
        },
        formatTooltip: function(t, e, n, i) {
            var r = this.getData(), o = this.getRawValue(t), a = x(o) ? p(o, rx).join(", ") : rx(o), s = r.getName(t), l = ox(this.name);
            return (null != o || s) && (l += "html" === i ? "<br/>" : "\n"), s && (l += ox(s), 
            null != o && (l += " : ")), null != o && (l += ox(a)), l;
        },
        getData: function() {
            return this._data;
        },
        setData: function(t) {
            this._data = t;
        }
    });
    c(ax, jp), ax.extend({
        type: "markArea",
        defaultOption: {
            zlevel: 0,
            z: 1,
            tooltip: {
                trigger: "item"
            },
            animation: !1,
            label: {
                show: !0,
                position: "top"
            },
            itemStyle: {
                borderWidth: 0
            },
            emphasis: {
                label: {
                    show: !0,
                    position: "top"
                }
            }
        }
    });
    var sx = u, lx = y, ux = {
        min: lx(Su, "min"),
        max: lx(Su, "max"),
        average: lx(Su, "average")
    }, hx = _a({
        type: "marker",
        init: function() {
            this.markerGroupMap = z();
        },
        render: function(t, e, n) {
            var i = this.markerGroupMap;
            i.each(function(t) {
                t.__keep = !1;
            });
            var r = this.type + "Model";
            e.eachSeries(function(t) {
                var i = t[r];
                i && this.renderSeries(t, i, e, n);
            }, this), i.each(function(t) {
                !t.__keep && this.group.remove(t.group);
            }, this);
        },
        renderSeries: function() {}
    }), cx = function(t, e, n, i) {
        var r = Mu(t, i[0]), a = Mu(t, i[1]), s = C, l = r.coord, u = a.coord;
        l[0] = s(l[0], -1 / 0), l[1] = s(l[1], -1 / 0), u[0] = s(u[0], 1 / 0), u[1] = s(u[1], 1 / 0);
        var h = o([ {}, r, a ]);
        return h.coord = [ r.coord, a.coord ], h.x0 = r.x, h.y0 = r.y, h.x1 = a.x, h.y1 = a.y, 
        h;
    }, dx = [ [ "x0", "y0" ], [ "x1", "y0" ], [ "x1", "y1" ], [ "x0", "y1" ] ];
    hx.extend({
        type: "markArea",
        updateTransform: function(t, e, n) {
            e.eachSeries(function(t) {
                var e = t.markAreaModel;
                if (e) {
                    var i = e.getData();
                    i.each(function(e) {
                        var r = p(dx, function(r) {
                            return ku(i, e, r, t, n);
                        });
                        i.setItemLayout(e, r), i.getItemGraphicEl(e).setShape("points", r);
                    });
                }
            }, this);
        },
        renderSeries: function(t, e, n, i) {
            var r = t.coordinateSystem, o = t.id, a = t.getData(), l = this.markerGroupMap, u = l.get(o) || l.set(o, {
                group: new jh()
            });
            this.group.add(u.group), u.__keep = !0;
            var h = function(t, e, n) {
                var i, r;
                t ? (i = p(t && t.dimensions, function(t) {
                    var n = e.getData();
                    return s({
                        name: t
                    }, n.getDimensionInfo(n.mapDimension(t)) || {});
                }), r = new Mm(p([ "x0", "y0", "x1", "y1" ], function(t, e) {
                    return {
                        name: t,
                        type: i[e % 2].type
                    };
                }), n)) : r = new Mm(i = [ {
                    name: "value",
                    type: "float"
                } ], n);
                var o = p(n.get("data"), y(cx, e, t, n));
                t && (o = m(o, y(Au, t)));
                var a = t ? function(t, e, n, i) {
                    return t.coord[Math.floor(i / 2)][i % 2];
                } : function(t) {
                    return t.value;
                };
                return r.initData(o, null, a), r.hasItemOption = !0, r;
            }(r, t, e);
            e.setData(h), h.each(function(e) {
                var n = p(dx, function(n) {
                    return ku(h, e, n, t, i);
                }), o = !0;
                f(dx, function(t) {
                    if (o) {
                        var n = h.get(t[0], e), i = h.get(t[1], e);
                        (Cu(n) || r.getAxis("x").containData(n)) && (Cu(i) || r.getAxis("y").containData(i)) && (o = !1);
                    }
                }), h.setItemLayout(e, {
                    points: n,
                    allClipped: o
                }), h.setItemVisual(e, {
                    color: a.getVisual("color")
                });
            }), h.diff(u.__data).add(function(t) {
                var e = h.getItemLayout(t);
                if (!e.allClipped) {
                    var n = new pf({
                        shape: {
                            points: e.points
                        }
                    });
                    h.setItemGraphicEl(t, n), u.group.add(n);
                }
            }).update(function(t, n) {
                var i = u.__data.getItemGraphicEl(n), r = h.getItemLayout(t);
                r.allClipped ? i && u.group.remove(i) : (i ? Xi(i, {
                    shape: {
                        points: r.points
                    }
                }, e, t) : i = new pf({
                    shape: {
                        points: r.points
                    }
                }), h.setItemGraphicEl(t, i), u.group.add(i));
            }).remove(function(t) {
                var e = u.__data.getItemGraphicEl(t);
                u.group.remove(e);
            }).execute(), h.eachItemGraphicEl(function(t, n) {
                var i = h.getItemModel(n), r = i.getModel("label"), o = i.getModel("emphasis.label"), a = h.getItemVisual(n, "color");
                t.useStyle(s(i.getModel("itemStyle").getItemStyle(), {
                    fill: Gt(a, .4),
                    stroke: a
                })), t.hoverStyle = i.getModel("emphasis.itemStyle").getItemStyle(), Bi(t.style, t.hoverStyle, r, o, {
                    labelFetcher: e,
                    labelDataIndex: n,
                    defaultText: h.getName(n) || "",
                    isRectText: !0,
                    autoColor: a
                }), Pi(t, {}), t.dataModel = e;
            }), u.__data = h, u.group.silent = e.get("silent") || t.get("silent");
        }
    }), da(function(t) {
        t.markArea = t.markArea || {};
    }), e.version = Hg, e.dependencies = Gg, e.PRIORITY = Yg, e.init = function(t, e, n) {
        if (Lu) {
            if (Vc.replace(".", "") - 0 < Gg.zrender.replace(".", "") - 0) throw new Error("zrender/src " + Vc + " is too old for ECharts " + Hg + ". Current version need ZRender " + Gg.zrender + "+");
            if (!t) throw new Error("Initialize failed: invalid dom.");
        }
        var i = ha(t);
        if (i) return Lu && console.warn("There is a chart instance already initialized on the dom."), 
        i;
        Lu && (!I(t) || "CANVAS" === t.nodeName.toUpperCase() || (t.clientWidth || n && null != n.width) && (t.clientHeight || n && null != n.height) || console.warn("Can't get DOM width or height. Please check dom.clientWidth and dom.clientHeight. They should not be 0.For example, you may need to call this in the callback of window.onload."));
        var r = new Yo(t, e, n);
        return r.id = "ec_" + um++, sm[r.id] = r, Sn(t, cm, r.id), function(t) {
            function e(t, e) {
                for (var i = 0; i < t.length; i++) {
                    t[i][n] = e;
                }
            }
            var n = "__connectUpdateStatus";
            zg(tm, function(i, r) {
                t._messageCenter.on(r, function(i) {
                    if (lm[t.group] && 0 !== t[n]) {
                        if (i && i.escapeConnect) return;
                        var r = t.makeActionFromEvent(i), o = [];
                        zg(sm, function(e) {
                            e !== t && e.group === t.group && o.push(e);
                        }), e(o, 0), zg(o, function(t) {
                            1 !== t[n] && t.dispatchAction(r);
                        }), e(o, 2);
                    }
                });
            });
        }(r), r;
    }, e.connect = function(t) {
        if (x(t)) {
            var e = t;
            t = null, zg(e, function(e) {
                null != e.group && (t = e.group);
            }), t = t || "g_" + hm++, zg(e, function(e) {
                e.group = t;
            });
        }
        return lm[t] = !0, t;
    }, e.disConnect = ua, e.disconnect = dm, e.dispose = function(t) {
        "string" == typeof t ? t = sm[t] : t instanceof Yo || (t = ha(t)), t instanceof Yo && !t.isDisposed() && t.dispose();
    }, e.getInstanceByDom = ha, e.getInstanceById = function(t) {
        return sm[t];
    }, e.registerTheme = ca, e.registerPreprocessor = da, e.registerProcessor = fa, 
    e.registerPostUpdate = function(t) {
        im.push(t);
    }, e.registerAction = pa, e.registerCoordinateSystem = function(t, e) {
        Vr.register(t, e);
    }, e.getCoordinateSystemDimensions = function(t) {
        var e = Vr.get(t);
        return e ? e.getDimensionsInfo ? e.getDimensionsInfo() : e.dimensions.slice() : void 0;
    }, e.registerLayout = ga, e.registerVisual = ma, e.registerLoading = ya, e.extendComponentModel = xa, 
    e.extendComponentView = _a, e.extendSeriesModel = wa, e.extendChartView = ba, e.setCanvasCreator = function(t) {
        n("createCanvas", t);
    }, e.registerMap = function(t, e, n) {
        Eg.registerMap(t, e, n);
    }, e.getMap = function(t) {
        var e = Eg.retrieveMap(t);
        return e && e[0] && {
            geoJson: e[0].geoJSON,
            specialAreas: e[0].specialAreas
        };
    }, e.dataTool = {}, e.zrender = Gc, e.number = Qf, e.format = op, e.throttle = Mo, 
    e.helper = cv, e.matrix = vh, e.vector = eh, e.color = Nh, e.parseGeoJSON = fv, 
    e.parseGeoJson = vv, e.util = yv, e.graphic = xv, e.List = Mm, e.Model = $i, e.Axis = mv, 
    e.env = Bu;
});